几种排序算法的性能的统计图

好久没发点有趣的东西了,今天发个来看看。

上个星期raven给了我一组有趣的统计图。跟大家分享下吧~

下面是对几种排序算法的性能的统计图。
x轴是输入数组的大小,从1000到10000;y轴是消耗的时间,单位为ms。
每条统计线所代表的排序算法如底部的图例所示。

每张图代表一种输入类型的状况。
Sorted表示输入是已经排好序的(按照从小到大),
almost-sorted表示大约有20%的元素是不符合顺序的,
reverse表示顺序是颠倒的(按照从大到小排序),
random表示随机的输入。

看不到大图的请点击放大。

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9808/e985119c-70ed-3eb1-8349-544df38f9984.jpg[/img]

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9810/f52a965b-8688-3193-8d73-25db60841cc6.jpg[/img]

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9812/c81beebc-e20d-31e7-9ff4-1f4aeabf3d8f.jpg[/img]

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9814/59c5395c-808c-39d1-82c9-9b5a88785e8a.jpg[/img]

可以看到,有好几种排序算法在这个统一坐标上都看不出什么端倪(相对来说太快了……),
而selection sort则很稳定的呈现出平方级的增长。


把坐标轴重新设定一次,再看看状况如何:
(注释:
Shellsort-A采用的是Shell提出的数列,从floor(N/2)开始每次除以2;
Shellsort-B采用的是另一种数列,从floor(N/2)开始每次除以3。
Quicksort-A是采用输入数组在中间位置的元素为分隔点;
Quicksort-B是采用median-of-three为分隔点;
Quicksort-C是采用median-of-five为分隔点;
Quicksort-D是采用输入数组的实际中值为分隔点


[img]http://rednaxelafx.iteye.com/upload/picture/pic/9816/3dcb3329-6a45-3eef-870f-4ad0537c1f05.jpg[/img]

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9818/22b6b230-b39f-3063-9bd4-19b009df854d.jpg[/img]

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9820/4bd2e645-8c68-37a8-a74f-27677ca5a16d.jpg[/img]

[img]http://rednaxelafx.iteye.com/upload/picture/pic/9822/b03f5d84-fecb-3f2f-85f9-4810be660c5f.jpg[/img]

raven同学或许过段时间会把题目和代码都放出来吧。这家伙最近也是忙。
[i]更新:raven同学发帖了,[url]http://ravenex.iteye.com/blog/175557[/url]。要看源代码的去那里看……[/i]

统计实验是在这样的配置上:
Pentium 4 HT 3.20GHz
1GB DDR
JRE 1.6.0 update 3
不知道为什么,无论怎么调节实验次数的参数,出来的结果都会很“抖”。
我在我的老笔记本上也跑过这个实验,就一点都不“抖”,但是比这里的图要慢多了。

P.S. 统计图是用JFreeChart画的。呼,这库我2年前用得快吐血了……源码开放,文档要卖钱,这算盘打得真是响当当的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值