1、算法分类
根据算法采用的主要操作,可以将算法分为:插入排序、交换排序、归并排序、选择排序四大类,前面介绍的七种算法分别归属这四大类。
排序算法 | ||||||
插入排序 | 交换排序 | 选择排序 | 归并排序 | |||
插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 选择排序 | 堆排序 | 归并排序 |
从算法的简单性来看,又可分为:简单算法、改进算法:
简单算法:冒泡排序、插入排序、选择排序
改进算法:希尔排序、堆排序、归并排序、快速排序
2、算法性能
排序方法 | 平均情况 | 最好情况 | 最坏情况 | 辅助空间 | 稳定性 |
冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 稳定 |
插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
希尔排序 | O(nlogn)~O(n^2) | O(n^1.3) | O(n^2) | O(1) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n^2) | O(logn)~O(n) | 不稳定 |
a、当待排记录较少时,采用简单排序算法较优。
b、对于非常在乎稳定性的应用,归并排序是较好的选择。
c、从空间复杂度来说,归并排序与快速排序都需要一定的空间消耗,而堆排序的空间复杂度为O(1),是较好的选择。
d、从时间复杂度来说,堆排序与归并排序比较稳定,最好情况与最坏情况的时间消耗相同,而快速排序不稳定,最好情况与最坏情况相差较大。