排序算法分为内部排序和外部排序,内部排序是数据记录在内存中直接进行排序,而外部排序是因数据量大(内存中无法容纳),需要访问外存进行排序。通常所说的排序主要是指内部排序,常见的内部排序算法有:冒泡排序、直接插入排序、简单选择排序、希尔排序、堆排序、归并排序、快速排序、表排序和基数排序等。
复杂度分析:
| 排序算法 | 平均时间复杂度 | 最坏情况下时间复杂度 | 额外空间复杂度 | 稳定性 |
|---|---|---|---|---|
| 冒泡排序 | O(N2) | O(N2) | O(1) | 稳定 |
| 直接插入排序 | O(N2) | O(N2) | O(1) | 稳定 |
| 简单选择排序 | O(N2) | O(N2) | O(1) | 不稳定 |
| 希尔排序 | O(Nd) | O(N2) | O(1) | 不稳定 |
| 堆排序 | O(NlogN) | O(NlogN) | O(1) | 不稳定 |
| 归并排序 | O(NlogN) | O(NlogN) | O(N) | 稳定 |
| 快速排序 | O(NlogN) | O(N2) | O(logN) | 不稳定 |
| 基数排序 | O(P(N+B)) | O(P(N+B)) | O(N+B) | 稳定 |
854

被折叠的 条评论
为什么被折叠?



