排序算法总结之快速排序、归并排序、shell排序
2016-03-04 23:06
531 查看
快速排序:
快排效率高,时间复杂度最理想为 O(nlogn) ,最差时间为O(n^2),该算法不稳定。其主要思想如下:
快排是每次将序列第一个数当作一个参考值,分别将比参考值大的数放到参考值右侧,小于参考值的数放到参考值左边,将序列一分为二,对得到的两个数列再分别进行上述操作,直到排序完成。
实现过程:
快排程序:
归并(分治)排序:
归并排序实质上是对将序列拆分为有序序列,然后对有序序列进行合并,时间复杂度为O(nlogn),而且算法稳定。
实现过程:
程序代码:
shell排序:
shell排序实际上是再不停减少相互比较的两个数之间的距离(即增量)。如果前者大于后者则两个数交换,如果前者小于后者则不交换,直到增量减为1,从而达到排序的功能。因为该算法之间的交换不是相邻两个数之间的交换,所以该算法不稳定,时间复杂度为O(n^2).
实现过程:
实现程序:
检验程序:
上述三种排序都可以用该程序来验证,并检测他们排序所用时间的长短。每次会产生随即序列对其进行排序。由于排序速度较快,所以如要比较他们排序速度,应增加length的长度
快排效率高,时间复杂度最理想为 O(nlogn) ,最差时间为O(n^2),该算法不稳定。其主要思想如下:
快排是每次将序列第一个数当作一个参考值,分别将比参考值大的数放到参考值右侧,小于参考值的数放到参考值左边,将序列一分为二,对得到的两个数列再分别进行上述操作,直到排序完成。
实现过程:
快排程序:
归并(分治)排序:
归并排序实质上是对将序列拆分为有序序列,然后对有序序列进行合并,时间复杂度为O(nlogn),而且算法稳定。
实现过程:
程序代码:
shell排序:
shell排序实际上是再不停减少相互比较的两个数之间的距离(即增量)。如果前者大于后者则两个数交换,如果前者小于后者则不交换,直到增量减为1,从而达到排序的功能。因为该算法之间的交换不是相邻两个数之间的交换,所以该算法不稳定,时间复杂度为O(n^2).
实现过程:
实现程序:
检验程序:
上述三种排序都可以用该程序来验证,并检测他们排序所用时间的长短。每次会产生随即序列对其进行排序。由于排序速度较快,所以如要比较他们排序速度,应增加length的长度
相关文章推荐
- 《懒人Shell脚本》之二——语料库的格式化输出
- linux shell 编程笔记 - shell的输入与输出 -2- read - cat - 管道
- linux shell 编程笔记 - shell的输入与输出 -1- echo命令
- linux shell 编程笔记 - 后台执行命令&
- Xshell 缺少 mfc110.dll
- shell编程(一):简单命令
- Linux系统运维/Bash/5-2
- .bash_profile和.bashrc的区别(如何设置生效)
- 操作系统课程设计2 编写Linux bash脚本
- Pyhton执行shell
- shell 编程笔记
- XManage-xshell批量指令
- Linux系统运维/Bash/5-1
- tomcat 日志切割shell脚本
- linux shell多个数组循环
- Linux Shell 在整个工程中查找字符串或匹配模式
- Some Bash
- Hbase Shell使用
- shell用到的命令(2) ―― break,continue,echo,eval,
- shell用到的命令(1)――“AND(&&)”,“OR(||)”,“:”,"."