有意思的算法题:有10个文件,每个文件大概有10G,求里面最大的100个数;

算法思路 1:

第一个阶段:对于单个10G文件而言

1. 初始化:先取100个数,构建最小堆;

开始比较:

2. 取一个数 A,与最小堆的根节点进行比较;

3. 如果 A > 最小堆根节点,则替换根节点,否则,重复第2步进行下一轮比较;

4. 替换根节点后,重新构建最小堆

5. 重复以上2,3,4步骤,直至比较完整个文件的数字;

以上步骤可以获取该10G文件的100个最大的数字,10个文件用10个线程同时执行;

第二个阶段:对10个文件的各自的100个数,总共1000个数,进行第二轮比较

6. 我的思路还是通过以上1-5部的思路获取最终结果;

上一篇:企业面试中关于MYSQL重点的28道面试题解答


下一篇:java 阿里云短信发送