导航

各种排序算法总结

Posted on 2018-08-24 10:04  困或  阅读(176)  评论(0编辑  收藏  举报

1.冒泡法

  冒泡法的思想:从头开始,一次比较两个相邻的元素,如果前面的大于后面的就交换,因此一轮结束后,最大的元素会放到最后。之后重复从头开始比较,进行剩下元素(此时最后一个元素已排序好)的排序。

2.选择法

  选择排序法思想:每一趟从待排序的数据元素中选出最小的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。第一轮,从数组中选取最小的一个元素和第一个元素交换,第二轮,从剩下的数组中选取最小的元素和第二个元素交换...

3.堆排序法

  堆排序法思想:第一步把数组构造成大顶堆后,此时根节点值最大。第二步,根和末尾交换,此时末尾元素最大,然后把除末尾的剩下元素继续调整成一个大根堆。最后再重复第二步就可以了。

4.归并排序法

  归并排序法思想:把两个有序队列合并成一个有序队列,然后递归调用该流程。经典的分治法思想。

5.快速排序法

  快速排序法思想:给第一个元素找到在数组中的位置,这个位置就是这个元素最终在数组中的位置,然后给这个元素左右两侧进行递归。

6.基数排序法(以LSD说明)

  基数排序法思想:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。之后从最低位开始,依次进行一次排序,最后排到最高位后,就完成了。这意思就是每次排完一轮,相同位数的元素就会排序好。

          例如排序:2,10,20,7,5,100,200,1000,2000,第一轮排序完后,2、7、5就会有序;第二轮排序好后,2,10,20,7,5就会有序;第三轮排序好后,2,10,20,7,5,100,200就会有序;....

7.插入法

  插入法排序思想:把一个数插入到已经排序好的序列中,初始认为第一个值有序,之后从第二个值插入到前面的序列中。具体插入流程就把插入点之后的数后移一位。

8.希尔排序法

  希尔排序法思想:把数据分组后,对每组进行插入法排序,之后减少分组再次用插入法排序,减少到1组时再进行插入法排序,排序完成。相比于直接插入法,其意义就是分组可以减少元素移动次数。