常见排序算法的时间复杂度

排序法平均时间最差情形稳定度额外空间备注
冒泡O(n^{2})O(n^{2})稳定O(1)n小时较好
交换O(n^{2})O(n^{2})不稳定O(1)n小时较好
选择O(n^{2})O(n^{2})不稳定O(1)n小时较好
插入O(n^{2})O(n^{2}​​​​​​​)稳定O(1)大部分已排序时较好
基数O(log_{R}B)O(log_{R}B​​​​​​​)稳定O(n)

B是真数(0-9),

R是基数(个十百)

ShellO(nlogn)O(n^{s}) 1<s<2不稳定O(1)s是所选分组
快速O(nlogn)O(n^{2}​​​​​​​)不稳定O(nlogn)n大时较好
归并O(nlogn)O(nlogn)稳定O(1)n大时较好
O(nlogn)O(nlogn)不稳定O(1)n大时较好

 

常用排序算法总结和对比
排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定性
冒泡排序O(n^{2})O(n)O(n^{2})O(1)In-place稳定
选择排序O(n^{2})O(n^{2})O(n^{2})O(1)In-place不稳定
插入排序O(n^{2})O(n)O(n^{2})O(1)In-place稳定
希尔排序O(n log n)O(n log^{2} n)O(n log^{2} n)O(1)In-place不稳定
归并排序O(n log n)O(n log n)O(n log n)O(n)Out-place稳定
快速排序O(n log n)O(n log n)O(n^{2})O(log n)In-place不稳定
堆排序O(n log n)O(n log n)O(n log n)O(1)In-place不稳定
计数排序O(n + k)O(n + k)O(n + k)O(k)Out-place稳定
桶排序O(n + k)O(n + k)O(n^{2})O(n + k)Out-place稳定
基数排序O(n \times k)O(n \times k)O(n \times k)O(n + k)Out-place稳定

相关术语解释:

1)稳定:如果a原本在b前面,而a = b,排序之后a仍然在b的前面

2)不稳定:如果a原本在b的前面,而a = b,排序之后a可能会出现在b的后面

3)内排序:所有排序操作都在内存中完成

4)外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行

5)时间复杂度:一个算法执行所耗费的时间

6)空间复杂度:运行完一个程序所需内存的大小

7)n:数据规模

8)k:桶的个数

9)In-place:不占用额外的内存

10)Out-place:占用额外的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值