您的位置:首页 > 其它

常见的几种排序算法总结

2017-07-10 15:12 246 查看

常见的几种排序算法总结

上篇博客主要介绍了几种排序的算法思想及代码实现,本篇主要对上篇进行总结。

几种算法的时间复杂度及稳定性如下:



(1)直接插入排序

适用场景:一般不用在数据大于1000的场合下使用插入排序,或者重复排序超过200数据项的序列。当数据已经基本有序时,采用插入排序可以明显减少数据交换和数据移动次数,进而提升排序效率。

(2)希尔排序

适用场景:增量初始值不容易选择,所以该算法不常用。

(3)选择排序:

适用场景:交换少的序列中

(4)堆排序:

适用场景:堆排序适合于数据量非常大的场合(百万数据)。

堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可能会发生堆栈溢出错误。

(5)冒泡排序

适用场景:与直接排序类似,但效率比它还低。

(6)快速排序

适用场景:快速排序比大部分排序算法都要快,应用很广泛,差不多各种语言均提供了快排。

(7)归并排序

适用场景:外部排序

补充:

(8)基数排序

它是一种比较新颖的算法,但是它只能用于整数的排序,如果我们要把同样的办法运用到浮点数上,我们必须了解浮点数的存储格式,并通过特殊的方式将浮点数映射到整数上,然后再映射回去,这是非常麻烦的事情,因此,它的使用同样也不多。而且,最重要的是,这样算法也需要较多的存储空间。

思想:把每个数据看成d个属性组成,依次按照d个属性对数据排序(每轮排序可采用计数排序),复杂度为O(d*N)

适用场景:数据明显有几个关键字或者几个属性组成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: