100亿个整数,找出中位数
来源:互联网 发布:轩辕世界神翼进阶数据 编辑:程序博客网 时间:2024/05/16 14:18
100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
(1)当内存足够时:
采用快排,找到第n大的数。
• 随机选取一个数,将比它小的元素放在它左边,比它大的元素放在右边
• 如果它恰好在中位数的位置,那么它就是中位数,直接返回
• 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理(还是第几大)
• 否则中位数一定在右半边,根据左半边的元素个数计算出中位数是右半边的第几大(重新算第几大),然后递归到右半边处理
(2)当内存不足时:
分桶法
把所有数划分到各个小区间,把每个数映射到对应的区间里,对每个区间中数的个数进行计数,数一遍各个区间,看看中位数落在哪个区间,若够小,使用基于内存的算法,否则继续划分。
比如数是32位的,根据每个整数的二进制前5位,划分为32个桶,把数放进对应桶中。如果该桶放不下,继续划分,直至内存可以放心为止。统计每个桶中元素个数,算出中位数一定出现在哪个桶中,而且计算出是该桶中的第几大。
阅读全文
0 0
- 100亿个整数,找出中位数
- 从10G个整数中找出中位数
- 10G个整数,乱序排列,要求找出中位数
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 40亿个整数,求上中位数
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- 10G 个整数,乱序排列,要求找出中位数,内存限制为 2G
- 从100亿个整数中找出最大/最小的1000个整数
- 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可
- 在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
- 虚拟机的安装与联网
- WEB APP、HYBRID APP与NATIVE APP的设计差异
- Ubuntu 之 Sublime Text 中文输入 问题
- 【数据库】——初步了解
- 系统备份与还原
- 100亿个整数,找出中位数
- C# 之装箱与拆箱
- 【数据库】——SQL入门
- win10下乌龟git安装和使用
- 总结$(window)和$(document)获取到的不同。
- java读写文件
- live
- 我的编程之旅
- Windows开发--获取文件大小及获取文件夹大小的方法