最大堆排序总结

本文对比了递归最大堆、非递归最大堆及移位非递归最大堆三种算法在不同数据规模下的排序性能。结果显示,随着数据量的增长,移位非递归最大堆展现出最优性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值