【排序的分类】
1. 基于比较的排序
- 交换排序(冒泡排序、快速排序)
- 选择排序(简单选择排序、堆排序)
- 插入排序(直接插入排序、折半插入、希尔排序)
- 归并排序
2. 不基于比较的排序
- 基数排序
【排序算法分析】
1. 冒泡排序
最好情况:O(n)
最坏情况:
O(n^2)
平均情况:O(n^2)
2. 快速排序
最好情况:T(n) ≤ 2T(n/2)+n O(nlogn)
最坏情况:O(n^2)
平均情况:
O(nlogn)
3. 直接选择排序
最好情况、最坏情况、平均情况:O(n^2)
4. 堆排序
最好情况、最坏情况、平均情况:O(nlogn)
5. 直接(折半)插入排序
最好情况:O(n)
最坏情况:O(n^2)
平均情况:O(n^2)
6. 希尔排序
最坏情况:O(n^2)
7. 归并排序
最好情况、最坏情况、平均情况:O(nlogn)
【问题复杂度下界】
规约法:O(nlogn)