最大堆排序总结
来源:互联网 发布:钻石篮球联赛官网数据 编辑:程序博客网 时间: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毫秒
- 最大堆排序总结
- 堆排序(最大堆)
- 堆排序(最大堆)
- 最大堆 堆排序
- 最大堆和堆排序
- 最大堆与堆排序
- 最大堆实现堆排序
- 堆排序(最大堆)
- 堆排序(最大堆)
- 堆排序(最大堆)
- 最大堆实现堆排序
- 最大堆排序Max_Heapify
- 最大堆排序
- c 最大堆排序
- 最大堆排序
- Java最大堆排序
- 最大堆排序
- 最大/最小堆排序
- GCD
- 使用Python的netCDF4和matplotlib.basemap包进行气象数据的可视化
- 支持向量机通俗导论(理解SVM的三层境界)
- 数据库连接池的工作原理
- Qt中各个widget前后位置的设定(转)
- 最大堆排序总结
- 【BZOJ1097】[POI2007]旅游景点atr【最短路】【状压DP】【记忆化搜索】
- hadoop启动失败的可能原因
- ext3与ext4主要区别
- C++语言之析构函数与构造函数
- [C/C++]在头文件中使用static定义变量意味着什么
- PAT1026
- 01. java入门
- C++模板 -- 模板隐式实例化和显式实例化