统计了几种排序算法的比较和交换次数,以普通冒泡排序比较次数为100,做了一下数据处理,结果如下:
说明:
1.行中第一个是比较次数,第二个是交换次数。
2.第一行是全部随机,第二行是前70%有序,后30%无序。
3.数据个数是1000个。
1.普通冒泡。
100 50
100 28
2.带标记的冒泡。
100 50
99 28
3.鸡尾酒排序。
67 50
48 28
4.奇偶排序
98 50
97 28
5.梳子排序
5 1
5 1
6.地精排序。
101 50
57 28
7.快速排序。
2 1
2 1
8.选择排序。
100 0
100 0
9.插入排序
51 25
29 14
10.shell排序 (gap= n/2^i)
3 1
3 1
11.shell排序 (gap= 3*gap+1)
3 1
3 1
结论:
1.最快的当然是快速排序。
2.选择排序交换较少。还是有交换的,那个0是因为次数太少,四舍五入得出的。
3.最简单的插入排序也比冒泡排序好。
4.2,3,4,6,都是冒泡排序衍生的,比较次数不同,但交换次数是一样的。
5.shell排序的gap选择除2跟其他比较,在排序数据少时,差别不大。
说明:
1.行中第一个是比较次数,第二个是交换次数。
2.第一行是全部随机,第二行是前70%有序,后30%无序。
3.数据个数是1000个。
1.普通冒泡。
100 50
100 28
2.带标记的冒泡。
100 50
99 28
3.鸡尾酒排序。
67 50
48 28
4.奇偶排序
98 50
97 28
5.梳子排序
5 1
5 1
6.地精排序。
101 50
57 28
7.快速排序。
2 1
2 1
8.选择排序。
100 0
100 0
9.插入排序
51 25
29 14
10.shell排序 (gap= n/2^i)
3 1
3 1
11.shell排序 (gap= 3*gap+1)
3 1
3 1
结论:
1.最快的当然是快速排序。
2.选择排序交换较少。还是有交换的,那个0是因为次数太少,四舍五入得出的。
3.最简单的插入排序也比冒泡排序好。
4.2,3,4,6,都是冒泡排序衍生的,比较次数不同,但交换次数是一样的。
5.shell排序的gap选择除2跟其他比较,在排序数据少时,差别不大。