有10亿个浮点数,从中找出1万个最大的数。

1、给一个基于最小二叉堆的方案:

<br /> 第一阶段,向最小二叉堆中插入前一万个浮点数;

<br /> 第二阶段,从第一万零一个浮点数开始,将之与最小二叉堆顶部的最小值比较。如果小于这个最小值,把最小值弹出并将新值插入到二叉堆中。重复此过程直到遍历完成。

 

 

2、可以用分段的方法,在数据结构版看mathe给的(可能题目不太一样),大致是这样的: <br />  <br /> 开一个100万的数组, <br /> 1,读入100万的数据 <br /> 2,找到最大的1万个数据,有线性算法的 <br /> 3,现在数组里只有1万个数据了,取最小的那个数据 TempMin <br /> 4,再从源数据中读数据,只保存比TempMin大的数据,其他数据丢弃 <br /> 5,当数据达到100万或数据读完时,用第二步的方法找到最大的1万个,如果还有数据转3,如数据读完则结束 <br />

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值