最大堆排序总结
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毫秒
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毫秒
相关文章推荐
- YARN
- 模板与泛型编程1
- C# 线程池中取消线程的三种方式
- Matlab读写TIFF格式文件
- 显式调用构造函数
- 2016春季训练——哈希
- 面试常客Handler详细解析(handler基础)(一)
- 非递归最大堆
- 第一周作业
- java.lang.NoClassDefFoundError 怎么解决
- Assignment to name ignored, since the identifier is never used
- 快速地搜索手机文件引擎(JavaIO的应用)
- uva10905连接n个数字,使得连成的数字最大
- RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Solaris) (文档 ID 1526517.1)
- 寒假刷题-最小生成树
- IOS 开发之 界面传值
- maven 父子项目 聚合与继承 生命周期 打包插件 依赖打包 jar pom war
- react学习札记(二)
- 上传文件
- CSS制作水平垂直居中对齐 多种方式各有千秋