排序算法的学习暂告一段落了,算法与数据结构的学习才刚刚开始,加油!
排序算法中以冒泡,选择,插入排序最为基础,归并,快速,堆排序最为实用,shell排序是分组插入排序,适合在数据量不大的环境下使用。计数,基数,桶排序均对输入序列有某种假设,且需要一定的额外存储空间,非in place排序算法。
排序算法 | 平均时间 | 最差时间 | 稳定度 | 额外空间 | 备注说明 |
冒泡排序 | O(n2) | O(n2) | 稳定 | O(1) | n小时较好 |
选择排序 | O(n2) | O(n2) | 不稳定 | O(1) | n小时较好 |
插入排序 | O(n2) | O(n2) | 稳定 | O(1) | n小时较好 |
归并排序 | O(nlogn) | O(nlogn) | 稳定 | O(n) | n大时较好 |
快速排序 | O(nlogn) | O(n2) | 不稳定 | O(logn) | n大时较好 |
堆排序 | O(nlogn) | O(nlogn) | 不稳定 | O(1) | n大时较好 |
计数排序 | O(n) | O(n) | 稳定 | O(n+k) | 输入序列限制 |
基数排序 | O(n) | O(n) | 稳定 | O(n+k) | 输入序列限制 |
桶排序 | O(n) | O(n) | 稳定 | O(n) | 输入序列限制 |