Chow's Notes

排序算法的比较

排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性
冒泡排序 O(n2) O(n) O(n2) O(1) 稳定
简单选择排序 O(n2) O(n2) O(n2) O(1) 稳定
直接插入排序 O(n2) O(n) O(n2) O(1) 稳定
希尔排序 O(nlogn)~O(n2) O(n1/3) O(n2) O(1) 不稳定
堆排序 O(nlogn) O(nlogn) O(nlogn) O(1) 不稳定
归并排序 O(nlogn) O(nlogn) O(nlogn) O(n) 稳定
快速排序 O(nlogn) O(nlogn) O(n2) O(logn)~O(n) 不稳定

简单算法:冒泡、简单选择、直接插入

改进算法:希尔、堆、归并、快速

如果序列基本有序,不应该考虑4种复杂的改进算法

从最坏情况看,堆排序与归并排序又强过快速排序以及其它简单排序

从待排序的记录个数来说,待排序的个数N越小,采用简单排序方法越合适

总体上,经过优化的快速排序最优