一、 时间性能

 1. 按平均的时间性能来分,有三类排序方法:

  时间复杂度为O (nlogn) 的方法有:快速排序、堆排序和归并排序,其中快速排序目前被认为是最快的一种排序方法,后两者之比较,在 n 值较大的情况下,归并排序较堆排序更快;

  时间复杂度为O (n2) 的有:插入排序、起泡排序和选择排序,其中以插入排序为最常用,特别是对于已按关键字基本有序排列的记录序列尤为如此,选择排序过程中记录移动次数最少;

  时间复杂度为O (n) 的排序方法只有基数排序一种。

 2. 当待排记录序列按关键字顺序有序时,插入排序和起泡排序能达到O (n)的时间复杂度;而对于快速排序而言,这是最不好的情况,此时的时间性能蜕化为O (n2),因此应尽量避免。

 3. 选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。

 4. 以上对排序的时间复杂度的讨论主要考虑排序过程中所需进行的关键字间的比较次数,当待排序记录中其它各数据项比关键字占有更大的数据量时,还应考虑到排序过程中移动记录的操作时间,有时这种操作的时间在整个排序过程中占的比例更大,从这个观点考虑,简单排序的三种排序方法中起泡排序效率最低。
 
 
  迄今为止,已有的排序方法远远不止本章讨论的几种方法。人们之所以热衷于研究多种排序方法是由于排序在计算机中所处的重要地位;另一方面,由于这些方法各有其优缺点,难以得出哪个最好,哪个最坏的结论。因此,排序方法的选用应视具体场合而定。一般情况下考虑的原则有:(1)待排序的记录个数n;(2)记录本身的大小;(3)关键字的分布情况;(4)对排序稳定性的要求等。