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

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


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

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

类别

名称

摘要

复杂度

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

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

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

~!~
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值