根据排序工程中借助的主要操作,我们将内排序分为:插入排序,交换排序,选择排序,归并排序。
插入排序有:直接插入排序(增量永远为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) |
不稳定 |
各种排序算法的实现代码如下: