最大堆排序总结

来源:互联网 发布:钻石篮球联赛官网数据 编辑:程序博客网 时间:2024/06/04 19:28

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毫秒






0 0