算法性能:十种常见排序算法时间效率直观对比

算法性能:十种常见排序算法时间效率直观对比

一、10算法分类

本文一共总结了10种排序算法,其中

基于比较的排序算法有

冒泡排序,插入排序,希尔排序,选择排序,归并排序,堆排序,快速排序;

线性时间排序算法包括

计数排序,基数排序,桶排序;

前边有提到过,基于比较的排序算法,时间复杂度最差达到O(nlogn)O(nlogn),无法突破这个界限,只有线性时间排序能够突破,达到O(n)O(n),所以说,如果满足了线性时间排序算法的限制条件,使用线性时间排序将会使排序性能得到极大提升。

二、实际测试数据

下面对以上涉及到的每种算法做一个简单的实际测试对比:利用随机数,随机生成区间0 ~ K之间的序列,共计N个数字,利用各种算法进行排序,记录排序所需时间,测试环境为i7+vs2015+Debug版本。

算法\输入数据N=50 K=50N=200 K=100N=500 K=500N=2000 K=2000N=5000 K=8000N=10000 K=20000N=20000 K=20000N=20000 K=200000

冒泡排序

0ms

15ms

89ms

1493ms

9363ms

36951ms

147817ms

143457ms

插入排序

1ms

13ms

82ms

1402ms

8698ms

34731ms

134817ms

134836ms

希尔排序

0ms

1ms

6ms

30ms

110ms

257ms

599ms

606ms

选择排序

0ms

5ms

31ms

461ms

2888ms

11736ms

45308ms

44838ms

堆排序

0ms

3ms

9ms

40ms

124ms

247ms

525ms

527ms

归并排序

2ms

6ms

18ms

75ms

199ms

392ms

778ms

793ms

快速排序

0ms

1ms

2ms

14ms

36ms

84ms

196ms

163ms

计数排序

0ms

1ms

1ms

5ms

15ms

32ms

51ms

62ms

基数排序

0ms

1ms

4ms

19ms

47ms

114ms

237ms

226ms

桶排序

0ms

2ms

6ms

25ms

68ms

126ms

254ms

251ms

三、性能对比小结

1. 传统简单排序确实当数据量很小的时候也表现不错,但当数据量增大,其耗时也增大十分明显;

2. 冒泡,插入,选择三种排序中,当数据量很大时,选择排序性能会更好;

3. 堆排,希尔,归并,快排几种排序算法也表现不错,源于其时间复杂度达到了O(nlogn)O(nlogn);

4. 随机快速排序性能确实表现十分亮眼,甚至有时比基数排序和桶排序还好,这可能也是快排如此流行的原因;

5. 线性排序中计数排序表现最好,但他们的限制也比较明显,只能处理范围内的正整数。

相关

司法考试怎么样算通过?
比分365

司法考试怎么样算通过?

📅 07-15 👁️ 2009
钓鱼竿28调和37调是什么意思,有什么区别
365bet中文官网

钓鱼竿28调和37调是什么意思,有什么区别

📅 08-09 👁️ 4451
冬天不可或缺的毛衣怎麼穿? 手把手教你四種萬能穿搭公式