常见的排序算法小结

来源:互联网 发布:fc2最新手机视频域名 编辑:程序博客网 时间:2024/06/06 07:19

常见的排序算法小结

一、根据时间复杂度对排序算法进行分类,其中N为数据样本个数
1、复杂度为平方阶O(N^2)
冒泡、选择、插入排序
2、复杂度为O(NlogN)
快速、堆、归并排序
3、复杂度为O(N^1+£)
希尔排序,其中£是介于0到1之间的
4、线性阶O(n)
桶、箱、基数排序

二、排序算法稳定性分析
1、稳定性的算法:
插入排序、冒泡排序、归并排序、桶、基数排序
2、不稳定排序
选择排序、堆排序、快速排序、希尔排序

三、排序算法的应用场景
根据不同的算法的性能以及对使用的需求不同的排序算法应用的场景不同。
考虑场景时,需要考虑以下几个点:
1、待排序的记录数目n;
2、记录的大小(规模);
3、关键字的结构及其初始状态;
4、对稳定性的要求;
5、语言工具的条件;
6、存储结构;
7、时间和辅助空间复杂度等。

排序算法选择
(1)若 n 较小(如 n≤50),可采用直接插入或直接选择排序。
当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。

(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;

数据量大的时候
(3)若 n 较大,则应采用时间复杂度为 O(nlgn)的排序方法:快速排序、堆排序或归并排序。
快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。
若要求排序稳定,则可选用归并排序。

相关算法实现过程C++版可以参照:http://yansu.org/2015/09/07/sort-algorithms.html

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 父母总吵架打架怎么办 老婆老提离婚怎么办 睡眠不好脑子疼怎么办 父母离异孩子结婚怎么办 父母离异后房产怎么办 夫妻离婚后孩子怎么办 离婚小孩的户口怎么办 离婚孩子落户口怎么办 父母离婚孩子出生证怎么办 离婚怎么办孩子的户口 离婚了儿子户口怎么办 性格不合离婚 孩子怎么办 前夫不迁走户口怎么办 我想离婚老婆不同意怎么办 要离婚没身份证怎么办 老婆怀孕想离婚怎么办 我老婆起诉离婚怎么办 父母冷战我该怎么办 经常跟父母亲吵架怎么办 14岁父母离婚怎么办 夫妻为钱吵架怎么办 离婚后担心孩子怎么办 不爱对方有孩子怎么办 爸和大伯吵架怎么办 孩子和家长吵架怎么办 老公吵架摔东西怎么办 楼上吵架摔东西怎么办 宿友没素质的人怎么办 父母人品差自私怎么办 家里穷压力大怎么办 偏执型人格障碍怎么办 遇到低素质保安怎么办 和老婆性格不合怎么办 当心理阴暗时怎么办 孩子胆子小怎么办呢? 父母伤亡的孩子怎么办 小孩上课老是走神怎么办 小孩上课老走神怎么办 小孩上课爱走神怎么办 孩子对学习成绩无所谓怎么办 孩子脾气特别倔强怎么办