代码改变世界

算法复习

2020-01-11 15:44  qgbo  阅读(115)  评论(0编辑  收藏  举报

1.冒泡排序:一个一个冒泡。

比较次数  N -1  +  N-2 +  N-3 + ...+ N-(N-1)  共N-1 项, =(N-1) * N /2

2.快速排序。先是找出某一个数的最终位置()。这样可以做到稳定。这一步 N-1. 结果序列分为2 部分。每部分再这样操作每部分的操作为N/2 (假设正好评分),结果需要N/2 *2 次比较,变为4 份。下次的操作是 N/4 *4.

一共分log2 N 次。 这样复杂度是 N* logN

3.归并排序。先分组,分为 N/2 组,排好序需要 N/2 次。归并一次,需要N/4 * 2 (n/4 是完成后的组数,2是比较的次数,这结果是4个数,4个数的有序了) 次。 下一次是 N/8 *4   最后一次是 N/N * N/2. 一共是 logN 项。复杂度是  1/2 *N*logN 

4.插入排序。前两个数先排序,比较次数为1,第三个数插进去,比较次数是2,下一个比较次数是logN.  最后也是LogN .只是插入的时候会造成整体的移动,这样不大好