码迷,mamicode.com
首页 > 编程语言 > 详细

几种排序比较

时间:2016-01-11 23:58:54      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:

从书本上看的,这里记录下。

1.时间复杂度(平均时间复杂度)

插入排序:O(N2);

希尔排序:O(N2)     Hibbard增量的希尔排序平均:O(N7/6)  

堆排序:O(NlogN)   (每次需要构建堆,比较次数较多;为了减少开销,每次删除的数据放到头(从小到大排)或尾(从大到小排)

归并排序:O(NlogN) (每次需要拷贝一次数组,所以不常用,费时还占内存;但在海量数据,即文件中的数据排序,都是基于该排序的思想)

快速排序:O(NlogN)    (快速排序可以优化,主要是如何分组,即所谓的“枢纽元”选取,可以取left,right,middle中间值)

桶排序:O(N)   (这个消耗额外内存较多,可能适合某些特出场景)

2.选择哪个合适

按照书本上的数据统计(不讨论桶排序),20以内的元素比较还不如使用插入排序,代码易懂,耗时与快排之类的相同;

1000个元素以内,优化的希尔排序可以和优化的快速排序匹配;100个元素以内,希尔排序更快。

更多的元素,最好就是用快速排序了。

 

几种排序比较

标签:

原文地址:http://www.cnblogs.com/ming20151206/p/5122914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!