排序算法——常见排序算法汇总

排序(Sort)是将一组数据按照一定的大小先后顺序进行排列。排序算法是最基本的算法,但是在实际应用场景中档数据量非常庞大的时候往往面临一些困难,因此需要根据具体问题选择最合适的高效的排序算法。


排序算法有很多种,每一种排序算法都各有优劣。常见的包括交换排序,选择排序,插入排序,合并排序,一般这些排序过程都是直接在内存中完成,统称为内排序。而对于一些大的文件,由于内存有限,不能一次性在内存中直接完成,需要将大文件划分为若干部分,然后分别读入排序,经过多次处理完成整个排序过程,这种情况下的排序称为外排序

下表列举了内排序中常见的一些排序算法,算法的使用场景,复杂度:

类别

名称

摘要

复杂度

内排序 交换排序 冒泡排序  冒泡排序算法比较简单容易理解,若初始状态基本有序(指正序),可以采用冒泡排序,但不适合于规模较大且乱序的场景。 O(N2
鸡尾酒排序 冒泡排序的改进算法 O(N2
快速排序  采用分治的思想,平均排序效率高,在带排序数据量较大时多数情况下采用快速排序能取得较好的效果。 O(N*log2N)
选择排序 选择排序 算法简单,容易理解,但是非常慢的,即使是在最好的情况下都需要二次方时间。 O(N2
堆排序  算法效率高,而且在最好、最坏、平均情况下算法效率基本稳定。 O(N*log2N)
插入排序 插入排序  不适合对于数据量比较大的排序应用,如果小规模数据需要排序并且初始数据几乎是有序的,插入排序是一个不错的选择。 O(N2
希尔排序  插入排序的改进算法。 O(N3/2
合并排序 归并排序 采用了分治的思想,将两个(或以上)有序表合并成一个新的有序表,算法高效,但需要额外存储空间开销。 O(N*log2N)
其他 计数排序

桶排序
适用于排序规模较大,数据比较集中

适用于排序规模较大,数据比较集中,分布均匀
O(N)
     
外排序

~!~

你可能感兴趣的:(Algorithm,排序算法,数据结构)