在10万个数字中寻找前100大(top 100)的数字,要求在20万次比较中得到答案。

博客介绍了如何在10万个数字中找到前100大数字,通过类似淘汰赛的方式进行两两比较,构建二叉树,并在20万次比较内得到结果。在后续查找过程中,利用二叉树结构每次只需16到17次比较。解题要求避免使用堆排序,一次性申请大数组存储,并详细说明数据结构和实现过程。
摘要由CSDN通过智能技术生成

题目在10万个数字中寻找前100大(top 100)的数字,要求在20万次比较中得到答案。

提示像足球比赛的晋级赛一样,我们先举一个8个数据比大小的例子。

如图所示,通过两两比较得到一颗二叉树,1号和2号比较,2号胜出,3号和4号比较,3号胜出.....4次比较后第一轮胜出2,3,5,7号球员。再进行第二轮比较,2号和3号比较,2号胜出,5号和7号比较,7号胜出。再进行下一轮比较,直到得到冠军球员。 就跟NBA季后赛8进4进2进1一样。

如图2号球员(数据)胜出,那么2号得分肯定是最大的。如图所示的树形结构中可以看出,2号是1~8中得分最多的球员,7号是5~8中得分最多的。(注意:7号不一定是第二大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值