原文:100亿个数字找出最大的10个

首先一点,对于海量数据处理,思路基本上是确定的,必须分块处理,然后再合并起来。 对于每一块必须找出 个最大的数,因为第一块中 个最大数中的最小的,可能比第二块中 最大数中的最大的还要大。 分块处理,再合并。也就是Google MapReduce 的基本思想。Google有很多的服务器,每个服务器又有很多的CPU,因此, 亿个数分成 块,每个服务器处理一块, 亿个数分成 块,每个CPU处理一块。然 ...

2014-03-02 15:58 2 13785 推荐指数:

查看详情

如何给100亿个数字排序

转自:http://netsmell.com/post/how-sort-10-billion-data.html?ref=myread 海量数据处理/外部归并排序 - 分治.cppp 今天要给100亿个数字排序,100亿个 int 型数字放在文件里面大概有 37.2GB,非常大,内存 ...

Tue Oct 11 18:24:00 CST 2016 0 6089
面试题-10亿个数找出最大的10000个数(top K问题)

一个较好的方法:先拿出10000个建立小根堆,对于剩下的元素,如果大于堆顶元素的值,删除堆顶元素,再进行插入操作,否则直接跳过,这样知道所有元素遍历完,堆中的10000个就是最大的10000个。时间复杂度: m + (n-1)logm = O(nlogm) 优化的方法:可以把所有10亿个数据分组 ...

Fri Mar 06 04:19:00 CST 2020 0 1808
利用最小堆找出10亿个数最大的10000个数

最小堆 最小堆是一种完全二叉树,特点是根节点比两个子节点都小(或者根节点比子节点都大) 过程 先找10000个数构建最小堆 依次遍历10亿个数,如果比最小堆的最小值大,则替换这个最小值,并重新构建最小堆 最后输入10000个值 时间复杂度 构建最小堆的复杂度为 logn ...

Tue May 01 18:53:00 CST 2018 0 2403
如何从100个数找出最大的前100个数

1. 算法如下:根据快速排序划分的思想 (1) 递归对所有数据分成[a,b)b(b,d]两个区间,(b,d]区间内的数都是大于[a,b)区间内的数 (2) 对(b,d]重复(1)操作,直到最右边的区间个数小于100个。注意[a,b)区间不用划分 (3) 返回上一个区间,并返回此区间的数字 ...

Mon Apr 02 08:12:00 CST 2018 0 1257
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM