随笔分类 - JAVA
摘要:堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 我们将给定的数组想象成一个完全二叉树,那么数组元素与二叉树节点的对应关系如下: 可以看到 0 的子元素为 1 、 2
阅读全文
摘要:并归排序与快速排序相似,靠分治思想突破了排序算法 O(n2) 的瓶颈。 我们看回顾一下几大排序算法的时间、空间复杂度: 排序算法平均时间复杂度最坏时间复杂度空间复杂度是否稳定 冒泡排序 O(n2) O(n2) O(1) 是 选择排序 O(n2) O(n2) O(1) 不是 直接插入排序 O(n2)
阅读全文
摘要:最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新。 jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与程序计数器为线程私有区域。与操作系统定义的堆栈类似,栈用来存储方法调用时产生的临时变量以及寄存器值,
阅读全文
摘要:这道题目做了两个晚上,发现解题思路的优化过程非常有代表性。文章详细说明了如何从回溯解法改造为分治解法,以及如何由分治解法过渡到动态规划解法。解法的用时从 超时 到 超过 95.6% 提交者,到超过 99.8% 提交者。现整理下来分享给大家,如有错误评论区欢迎指正! 题目如下: 回溯法 刚看到这个题目
阅读全文
摘要:《红楼梦》第十二回,贾瑞因痴迷王熙凤,被王熙凤折腾的眼看就快不行了。当然这里面是没有多少爱的,完全因王熙凤的美貌而起。就在这时来了一个跛足道人,带来了一面宝镜,说能治好贾瑞的病。当然这可不是一面普通的镜子,而是由警幻仙子做制。并且道人还告诫贾瑞,这面镜子专治邪思妄动之症,有济世保生之功。所以带他到世
阅读全文
摘要:人类发明了轮子,提高了力的使用效率。 人类发明了自动化机械,将自己从重复的工作中解脱出来。 提高效率的方法好像总是离不开两点:拒绝无效劳动,拒绝重复劳动。人类如此,计算机亦如是。 前面我们说过了四数之和的递归和递推思路,递归和递推是一个比较通用的解题方法,我们可以以此为基础对解空间有一个整体的认识,
阅读全文
摘要:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 二分查找思路非常简单,由粗暴的遍历查找改为了将元素排序后不断的进行折半查找,将搜索的时间复杂度由O(N)降到了O(log2N)。 二分查找的思
阅读全文