先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html
本文思路部分来源于上篇文章,但测得的结果似乎不大相同,不知是因为java的缘故还是因为我算法的缘故,欢迎拍砖。
复习排序,顺便比下各种算法的速度,榜单如下:
1、冒泡排序
2、简单选择排序
3、直接插入排序
4、折半插入排序
5、希尔排序
6、堆排序
7、归并排序
8、快速排序
当然这是慢速排行,哈哈~~
直接上图:单位毫秒
| 冒泡排序 | 简单选择排序 | 直接插入排序 | 折半插入排序 | 希尔排序 | 堆排序 | 归并排序 | 快速排序 | |
| 10000个 | 1578 | 1250 | 672 | 250 | 0 | 15 | 16 | 0 |
| 15000个 | 3453 | 2765 | 1563 | 531 | 16 | 15 | 16 | 0 |
| 20000个 | 6140 | 4547 | 2453 | 828 | 16 | 16 | 15 | 16 |
| 25000个 | 10079 | 7171 | 3969 | 1313 | 31 | 16 | 15 | 16 |
| 30000个 | 14641 | 10313 | 5578 | 1906 | 31 | 31 | 16 | 31 |
| 35000个 | 20141 | 14328 | 7890 | 2563 | 31 | 31 | 32 | 15 |
| 40000个 | 25766 | 18359 | 10094 | 3422 | 47 | 31 | 31 | 32 |
| 45000个 | 32469 | 24063 | 13062 | 4359 | 47 | 47 | 31 | 47 |

由于"希尔排序","堆排序","归并排序","快速排序"太快,以至于在上图几乎是条直线,故有了下面转为他们准备的加强版
| 数量 | 希尔排序 | 堆排序 | 归并排序 | 快速排序 |
| 100000个 | 172 | 140 | 110 | 93 |
| 200000个 | 469 | 406 | 235 | 234 |
| 300000个 | 812 | 703 | 422 | 375 |
| 400000个 | 1125 | 1031 | 516 | 531 |
| 500000个 | 1406 | 1282 | 719 | 656 |
| 600000个 | 1828 | 1703 | 860 | 859 |
| 700000个 | 2531 | 2063 | 1000 | 968 |
| 800000个 | 2735 | 2453 | 1140 | 1188 |
| 900000个 | 3047 | 2843 | 1391 | 1266 |
| 1000000个 | 3375 | 3187 | 1516 | 1422 |
| 1100000个 | 3922 | 3500 | 1625 | 1609 |
| 1200000个 | 4421 | 3954 | 1969 | 1812 |
| 1300000个 | 4797 | 4422 | 2000 | 1953 |
| 1400000个 | 5391 | 4797 | 2547 | 2094 |
| 1500000个 | 5437 | 5219 | 2625 | 2328 |
| 1600000个 | 6203 | 5546 | 2469 | 2485 |
| 1700000个 | 6532 | 5953 | 2844 |
本文通过实验对比了多种排序算法(包括冒泡、选择、插入等)的运行效率,并特别关注了快速排序、归并排序等高级算法在大数据集上的表现。
18万+

被折叠的 条评论
为什么被折叠?



