算法导论
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 · 282 阅读 · 0 评论 -
排序算法-插入排序
排序1.插入排序(增量方法)将已排序的定义在最左端,将未排序的部分取最左边第一个元素,插入在已经排序部分的最合适的位置当然,也可以将已排序的定义在最右端,从未排序的部分取最右边的一个元素,插入到最右边最合适的位置 // 从最左到最右边,从第二个元素开始,对比第一个元素。再从第三个元素开始,与前面两个元素对比,依次下去// 第n个元素作为key,前面1~n-1已经排序原创 2016-05-07 13:42:05 · 401 阅读 · 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 · 387 阅读 · 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 · 320 阅读 · 0 评论