从书本上看的,这里记录下。
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