各种排序算法性能比较

1.稳定性比较

合并排序、插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的
选择排序、希尔排序、快速排序、堆排序是不稳定的

2.时间复杂性比较

  平均情况 最好情况 最坏情况
归并排序 O(nlogn) O(nlogn) O(nlogn)
基数排序 O(n) O(n) O(n)
快速排序 O(nlogn) O(nlogn) O(n2)
希尔排序 O(n1.5) O(n) O(n1.5)
插入排序 O(n2) O(n) O(n2)
选择排序 O(n2) O(n2) O(n2)







归并排序,基数排序对序列的输入顺序没有影响,堆排序影响较小

3.辅助空间的比较

线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为O(1);

4.其它比较

插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。
反而在这种情况下,快速排序反而慢了。
当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。
若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。
当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。
当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。
宜用归并排序。
当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。

你可能感兴趣的:(算法分析,排序算法,性能)