声明:本文最初发表于《电脑编程技巧与维护》2006年第5期,版本所有,如蒙转载,敬请连此声明一起转载,否则追究侵权责任。网上发表于恋花蝶的博客http://lanphaday.bokee.com 题目:从1亿个整数数中找出最大的1万个。 拿到这道题,马上就会想到的方法是建立一个数 ...
. 算法如下:根据快速排序划分的思想 递归对所有数据分成 a,b b b,d 两个区间, b,d 区间内的数都是大于 a,b 区间内的数 对 b,d 重复 操作,直到最右边的区间个数小于 个。注意 a,b 区间不用划分 返回上一个区间,并返回此区间的数字数目。接着方法仍然是对上一区间的左边进行划分,分为 a ,b b b ,d 两个区间,取 b ,d 区间。如果个数不够,继续 操作,如果个数超过 ...
2018-04-02 00:12 0 1257 推荐指数:
声明:本文最初发表于《电脑编程技巧与维护》2006年第5期,版本所有,如蒙转载,敬请连此声明一起转载,否则追究侵权责任。网上发表于恋花蝶的博客http://lanphaday.bokee.com 题目:从1亿个整数数中找出最大的1万个。 拿到这道题,马上就会想到的方法是建立一个数 ...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jj12345jj198999/article/details/17169559 ...
1、首先一点,对于海量数据处理,思路基本上是确定的,必须分块处理,然后再合并起来。 2、对于每一块必须找出10个最大的数,因为第一块中10个最大数中的最小的,可能比第二块中10最大数中的最大的还要大。 3、分块处理,再合并。也就是Google MapReduce 的基本思想。Google ...
从10000个整数中找出最大的10个,最好的算法是什么? 算法一:冒泡排序法 千里之行,始于足下。我们先不说最好,甚至不说好。我们只问,如何“从10000个整数中找出最大的10个”?我最先想到的是用冒泡排序的办法:我们从头到尾走10趟,自然会把最大的10个数找到。方法简单,就不再这里写 ...
一个较好的方法:先拿出10000个建立小根堆,对于剩下的元素,如果大于堆顶元素的值,删除堆顶元素,再进行插入操作,否则直接跳过,这样知道所有元素遍历完,堆中的10000个就是最大的10000个。时间复杂度: m + (n-1)logm = O(nlogm) 优化的方法:可以把所有10亿个数据分组 ...
原题如下: 有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。 我认为,首先要摸清考官的意图。是想问你os方面的知识,还是算法,或者数据结构。 如果是os: 无疑是外排序算法的选择。100g文件在当前的环境下是无法全部读入 ...
最近找实习, 在做Test Assignment时遇到了这么道题, 就顺便记录下来:说, 有1到100共100个数, 摆成一个圈. 从1开始, 每隔1, 2, 3, 4 ... 个数拿走一个数, 一直循环, 最后剩下几? 具体的讲就是一开始(隔0个数)把 1 拿走, 隔1个数(2)把3拿走, 再隔 ...