原文:【海量数据处理】100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?

内存足够的情况: 可以使 用类似quick sort的思想进行,均摊复杂度为O n ,算法思想如下: 随机选取一个元素,将比它小的元素放在它左边,比它大的元素放在右边 如果它恰好在中位数的位置,那么它就是中位数,可以直接返回 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理 否则,中位数一定在右半边,根据左半边的元素个数计算出中位数是右半边的第几大,然后递归 到右半边处理 内存不足的 ...

2015-09-17 17:23 0 4026 推荐指数:

查看详情

海量数据查找中位数

现在 有10亿个int型的数字(JAVA中 int 型占4B),以及一台可用内存为1GB的机器,如何找出这10亿个数字的中位数中位数定义:数字排序之后,位于中间的那个数。比如将10亿个数字进行排序(位置从1到10亿),排序之后,位于第5亿个位置的那个数 就是中位数。 关于中位数 ...

Sun Aug 14 06:34:00 CST 2016 0 13169
【转】海量数据中位数

以下是转载的:个人感觉第四种方法很巧妙,O(N)复杂度最好也最快!第二种方法不太理解~ 腾讯一面问到了,用的算法导论中的Kth算法,期望时间复杂度为O(n)。后来想了想,万一数据多的来根本不能一次读入内存,这个时候该如何解决呢? 题目如下:只有2G内存的pc机,在一个存有10G个整数 ...

Sat Jul 20 09:24:00 CST 2013 0 6153
面试问题1:给一个无序数组,找到中位数

问题描述:给一个无序数组,找到中位数,并说出该算法的时间复杂度以及空间复杂度。   解题方法一:    中位数:当数组元素个数为奇数n时,中位数=a[n/2]。当元素个数为偶数时,中位数=( a[n / 2] + a[ ( n + 1 ) / 2 ])  按照这个中位数定义来求解。利用 ...

Tue Mar 29 02:45:00 CST 2016 0 3193
求三个整数中的中位数

比如三个整数是 10 12 11,输出11 还是按照从结果出发思考问题 我们用middle变量来存放中位数 那么肯定有int middle 用户输入三个数分别是a b c 最后的结果无非是a是中位数 或者b是中位数 或者c是中位数 如果a是中位数则,middle ...

Sat Oct 13 01:00:00 CST 2018 0 667
腾讯面试题:10G 个整数,乱序排列,要求找出中位数内存限制为 2G。

腾讯面试题:10G 个整数,乱序排列,要求找出中位数内存限制为 2G。 题目和基本思路都来源网上,本人加以整理。 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间 ...

Tue Apr 14 06:08:00 CST 2015 0 6007
10G个整数,乱序排列,要求找出中位数内存限制为 2G。只写出思路即可

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的 空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。 分析: 既然要找中位数,很简单就是排序的想法。那么基于字节的桶排序是一个可行 ...

Mon Mar 09 05:44:00 CST 2020 0 823
加权中位数

问题描述为: 一个无序的数列,每个数有其对应的权重,权重为非负整数,代表数列中的数字出现的次数。要求找出这一无序数列中的中位数。 1. 直接解法,先对该数列和权重排序。然后找出累计权重为中位数的数字。 时间复杂度为排序的 O(nlog(n)+n) 2. 按照快速排序 ...

Thu Apr 04 23:18:00 CST 2019 0 840
MYSQL 取中位数

什么是最简单的(希望不是太慢)的方式来计算与MySQL?我AVG(x)寻找,但我有一个很难找到计算现在一个简单的方法,我返回所有行到PHP,做一个排序,然后拿起中间行,但肯定要有简单的做它的方式一个MySQL查询。 示例数据: 对排序val给2 2 3 4 7 8 9,所以应该是 ...

Wed Aug 31 05:13:00 CST 2016 0 9940
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM