排序算法总结

排序算法的稳定性

稳定排序算法会将相等的元素值维持其相对次序。如果一个排序算法是稳定的,当有两个相等的元素 R 和 S,且在原本的列表中 R 出现在 S 之前,那么在排序过的列表中 R 也将会是在 S 之前。

算法复杂度以及稳定性比较

排序算法 最好时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定
冒泡排序 \(O(n)\) \(O({n^2})\) \(O({n^2})\) \(O(1)\)
选择排序 \(O({n^2})\) \(O({n^2})\) \(O({n^2})\) \(O(1)\) 不是
直接插入排序 \(O(n)\) \(O({n^2})\) \(O({n^2})\) \(O(1)\)
归并排序 \(O(n\log n)\) \(O(n\log n)\) \(O(n\log n)\) \(O(n)\)
快速排序 \(O(n\log n)\) \(O(n\log n)\) \(O({n^2})\) 最好:\(O(\log n)\) 最差:\(O(n)\) 不是
希尔排序 \(O(n)\) \(O({n^{1.3}})\) \(O({n^2})\) \(O(1)\) 不是
posted @ 2019-01-08 15:45  youngliu91  阅读(103)  评论(0)    收藏  举报