根据排序工程中借助的主要操作,我们将内排序分为:插入排序,交换排序,选择排序,归并排序。
插入排序有:直接插入排序(增量永远为1的一个分组)和希尔排序(按增量递减分组后进行直接插入排序,increment=incremet/3+1)
交换排序有:冒泡排序和快速排序。
选择排序有:简单选择排序和堆排序。
归并排序。
这7种排序算法的各种指标进行对比:
平均情况 | 最好情况 | 最坏情况 | 辅助空间 | 稳定性 | |
冒泡排序 | O(n*n) | O(n) | O(n*n) | O(1) | 稳定 |
简单选择排序 | O(n*n) | O(n*n) | O(n*n) | O(1) | 稳定 |
直接插入排序 | O(n*n) | O(n) | O(n*n) | O(1) | 稳定 |
希尔排序 | O(nlogn)~O(n*n) | O(n) | O(n*n) | O(1) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n*n) | O(logn)~O(n) | 不稳定 |
各种排序算法的实现代码如下: