您的位置:首页 > 其它

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

2016-08-07 19:48 288 查看

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

冒泡:

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

最好情况是加了改进方法的最好:即冒泡的过程中检查是否发生了交换,如果没有发生交换,说明都排好序了,就break

插入:

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

直接选择排序:

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

快速排序:

平均O(NLogN) ,最坏O(N2) ,最好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层递归,而堆排序是在本层进行交换。
稍后附各种排序算法的代码及思路解释
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法