![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
hjing1988
这个作者很懒,什么都没留下…
展开
-
排序算法-堆排序
归并排序需要我们多一份空间出来,算法复杂度为O(nlgn) 堆排序也能做到算法复杂度为O(nlgn),但是不占用空间 堆:有点像二叉树,它有left孩子和right孩子 对任意节点i,它的left的值的下标为2*i + 1,right下标为2*i + 2 比如0,它的left是1,right是2. parent的下标值是i/2 - 1 最大堆特点: parent总比child原创 2016-05-11 15:19:59 · 277 阅读 · 0 评论 -
排序算法-插入排序
排序 1.插入排序(增量方法) 将已排序的定义在最左端,将未排序的部分取最左边第一个元素,插入在已经排序部分的最合适的位置 当然,也可以将已排序的定义在最右端,从未排序的部分取最右边的一个元素,插入到最右边最合适的位置 // 从最左到最右边,从第二个元素开始,对比第一个元素。再从第三个元素开始,与前面两个元素对比,依次下去 // 第n个元素作为key,前面1~n-1已经排序原创 2016-05-07 13:42:05 · 394 阅读 · 0 评论 -
排序算法-归并排序
将n个数分成n/2组,排序好,再两两合并,分成n/4组,再依次上去,因为已经排序好了,合并起来很快。 每次需要对比的次数为n次 比如n=64时 当n/4时,每队有4个数,总共有16组,第一队的4个数与第二队的4个数对比,需要最多8次。总共有8组(每组2对)需要对比,即对比64次,也就是n 即分解后都需要对比n次,那需要分解多少次呢? 64/2, 64/2/2, 64/2/2/2原创 2016-05-07 13:42:45 · 311 阅读 · 0 评论 -
排序算法-冒泡排序
这个方法比较有名,但也是最笨的方法了 比如n个数,就是先找到最小的,放好,在剩余的里面再找最小的。依次下去,复杂度就是1+2+3+4+....n 平均的比较复杂度都是n^2了 算法实现中,当然不能找到最小的放到数组里面去了,这样占用了内存 数组比如为1~n。从n开始与n-1对比,小的往上冒(交换),再把n-1与n-2对比,一样就不用交换,继续对比n-2与n-3,最后把最小的放在了1原创 2016-05-07 13:43:12 · 312 阅读 · 0 评论