排序算法总结

性能

排序法时间复杂度空间复杂度稳定性
插入O(n^2)O(1)稳定
冒泡O(n^2)O(1)稳定
选择O(n^2)O(1)不定
随机快排O(N*logN)O(1)不稳
heapO(N*logN)O(N)不稳
归并O(N*logN)O(N)稳定
计数O(N)O(M)稳定
基数O(N)O(N)稳定

证明

选择排序为什么不稳定?

对于[5,6,5,3],第一次排序后[3,6,5,5],稳定性被破坏。

快排的时间复杂度?

最坏情况是有序数组,如[1,2,3,4,5]这时时间复杂度为O(N^2)。

最好情况是排序后partiton落在中点,T(N)=2T(N/2),由master定理,T(N)=O(NlogN)

使用随机随机快排序可以达到O(N*logN)

堆排序的时间复杂度

将数组调整为堆:由上到下O(N*logN),由下到上O(N)

堆排序:交换堆顶和堆低元素,在向下调整,O(N*logN)

归并排序的空间复杂度

因为每个递归都会销毁本次递归申请的数组,所以最大为O(N)

计数排序的时空复杂度

时间:O(N+M),遍历数组求出范围+遍历范围填充数组

空间:O(M),创建的范围数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值