您的位置:首页 > 运维架构 > Shell

排序算法总结之快速排序、归并排序、shell排序

2016-03-04 23:06 531 查看
快速排序:

快排效率高,时间复杂度最理想为 O(nlogn) ,最差时间为O(n^2),该算法不稳定。其主要思想如下:

快排是每次将序列第一个数当作一个参考值,分别将比参考值大的数放到参考值右侧,小于参考值的数放到参考值左边,将序列一分为二,对得到的两个数列再分别进行上述操作,直到排序完成。

实现过程:



快排程序:



归并(分治)排序:

归并排序实质上是对将序列拆分为有序序列,然后对有序序列进行合并,时间复杂度为O(nlogn),而且算法稳定。

实现过程:



程序代码:





shell排序:

shell排序实际上是再不停减少相互比较的两个数之间的距离(即增量)。如果前者大于后者则两个数交换,如果前者小于后者则不交换,直到增量减为1,从而达到排序的功能。因为该算法之间的交换不是相邻两个数之间的交换,所以该算法不稳定,时间复杂度为O(n^2).

实现过程:



实现程序:



检验程序:





上述三种排序都可以用该程序来验证,并检测他们排序所用时间的长短。每次会产生随即序列对其进行排序。由于排序速度较快,所以如要比较他们排序速度,应增加length的长度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: