您的位置:首页 > 其它

最大堆排序总结

2016-03-04 21:42 288 查看
1、递归最大堆

2、非递归最大堆

3、移位非递归最大堆

经过测试发现第3种移位非递归最大堆堆中在这三种效果最优,其中,非递归最大堆约可将时间减少到递归最大堆的16%左右,而移位非递归最大堆约可将时间减少到非递归最大堆的0.78%左右。数据较小时差的更多,具体的估计与数据太大设计for循环中的i 值设小了有关。总的来说,一般情况下不用移位就可以了 ,主要关注点放到优化算法上去,算法的小改动就可以让数据的时间大大减小。

具体可参见下面测试结果。使用下面的电脑系统。



1、递归最大堆:

第1次测试:

一万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:31毫秒

第2次测试:

五万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:141毫秒

第3次测试:

十万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:328毫秒

第4次测试:

二十五万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:873毫秒

第5次测试:

五十万数据量

生成随机数赋值耗时:31毫秒

最大堆排序耗时:2293毫秒

第6次测试:

一百万数据量

生成随机数赋值耗时:31毫秒

最大堆排序耗时:4914毫秒 4.9秒

第7次测试:

三百万数据量

生成随机数赋值耗时:125毫秒

最大堆排序耗时:16380毫秒 16.4秒

第8次测试:

五百万数据量

生成随机数赋值耗时:203毫秒

最大堆排序耗时:28439毫秒 28.44秒

第9次测试:

一千万数据量

生成随机数赋值耗时:328毫秒

最大堆排序耗时:50966毫秒 50.96秒 1分钟

第10次测试:

三千万数据量

生成随机数赋值耗时:952毫秒

最大堆排序耗时:164472毫秒 164.5秒 3分钟

第11次测试:

五千万数据量

生成随机数赋值耗时:1685毫秒

最大堆排序耗时:297323毫秒 297.323秒 5分钟

第12次测试:

一亿数据量

生成随机数赋值耗时:3276毫秒

最大堆排序耗时:609137毫秒 609.137秒 10分钟

2、非递归最大堆:

第1次测试:

一万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:31毫秒

第2次测试:

十万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:266毫秒

第3次测试:

五十万数据量

生成随机数赋值耗时:31毫秒

最大堆排序耗时:1592毫秒

第4次测试:

一百数据量

生成随机数赋值耗时:31毫秒

最大堆排序耗时:3479毫秒

第5次测试:

五百万数据量

生成随机数赋值耗时:172毫秒

最大堆排序耗时:20405毫秒

第6次测试:

一千万数据量

生成随机数赋值耗时:312毫秒

最大堆排序耗时:42931毫秒

第7次测试:

三千万数据量

生成随机数赋值耗时:983毫秒

最大堆排序耗时:145783毫秒

第8次测试:

五千万数据量

生成随机数赋值耗时:1809毫秒

最大堆排序耗时:249586毫秒

第9次测试:

一亿数据量

生成随机数赋值耗时:3245毫秒

最大堆排序耗时:528765毫秒

3、移位非递归最大堆

第1次测试:

一万数据量

生成随机数赋值耗时:0毫秒

最大堆排序耗时:31毫秒

第2次测试:

十万数据量

生成随机数赋值耗时:15毫秒

最大堆排序耗时:250毫秒

第3次测试:

五十万数据量

生成随机数赋值耗时:15毫秒

最大堆排序耗时:1622毫秒

第4次测试:

一百万数据量

生成随机数赋值耗时:47毫秒

最大堆排序耗时:3401毫秒

第5次测试:

五百万数据量

生成随机数赋值耗时:156毫秒

最大堆排序耗时:20171毫秒

第6次测试:

一千万数据量

生成随机数赋值耗时:327毫秒

最大堆排序耗时:44020毫秒

第7次测试:

三千万数据量

生成随机数赋值耗时:967毫秒

最大堆排序耗时:145970毫秒

第8次测试:

一亿数据量

生成随机数赋值耗时:3261毫秒

最大堆排序耗时:524631毫秒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: