排序算法总结
选择排序
对于长度为N的数组,选择排序需要大约
N2/2
N
2
/
2
次比较 ( 比较次数和输入顺序无关)
最好情况下,
0
0
次交换
最坏情况下, 次交换
插入排序
对于长度为N的数组 (非改进插入排序算法),
平均情况下,插入排序需要大约
N2/4
N
2
/
4
次比较和
N2/4
N
2
/
4
次交换
最坏情况下,插入排序需要大约
N2/2
N
2
/
2
次比较和
N2/2
N
2
/
2
次交换
最好情况下,插入排序需要大约
N−1
N
−
1
次比较和
0
0
次交换
希尔排序
不稳定
归并排序
自顶向下的归并排序需要大约 至 NlgN N l g N 次比较;最多需要访问数组 6NlgN 6 N l g N 次
快速排序
在最好的情况下,快速排序只需要大约
NlgN
N
l
g
N
次比较操作
在最坏的情况下需要大约
12N2
1
2
N
2
次比较操作
在平均情况下大约
2NlnN
2
N
l
n
N
~
1.39NlgN
1.39
N
l
g
N
次比较。
不稳定
堆排序
在将
N
N
个元素排序时,堆排序最多需要 次比较和
NlgN+N
N
l
g
N
+
N
次交换
不稳定