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 />