各种排序算法时间复杂度及空间复杂度

一、排序算法的时间复杂度及空间复杂度

冒泡:

平均O(N2) ,最坏O(N2) ,最好O(N) ,辅助内存O(1),稳定排序

最好情况是加了改进方法的最好:即冒泡的过程中检查是否发生了交换,如果没有发生交换,说明都排好序了,就break
插入:
平均O(N 2) ,最坏O(N 2) ,最好O(N) ,辅助内存O(1),稳定排序
直接选择排序:
平均O(N 2) ,最坏O(N 2) ,最好 O(N 2 ),辅助内存 O(1),不稳定排序
快速排序:
平均O(NLogN ) ,最坏O(N 2 ) ,最好 O( NLogN ),辅助内存 O( LogN ),不稳定排序
最坏的情况是每次选择了最大或者最小值作为比较值。最坏情况下辅助内存也为O(N)
归并排序:
平均O(NLogN ) ,最坏O( NLogN ) ,最好 O( NLogN ),辅助内存 O(N ),稳定排序
稳定的保证取决于比较规则为:前一班的数<=后一半的数,则先归并前一半的数
堆排序:    
平均O(NLogN ) ,最坏O( NLogN ) ,最好 O( NLogN ),辅助内存 O(1 ),不稳定排序
都用交换的情况下,快速排序辅存是 O( LogN ),而堆排序辅存是O(1)的原因是,快速排序是logN层递归,而堆排序是在本层进行交换。
稍后附各种排序算法的代码及思路解释
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值