【转】5亿个数找中位数
找中位数最容易想到的方法就是,先对序列进行排序,取中位数,然而5亿个数要想全部读入内存需要将近2GB空间。
一种想法是采用外部排序的方法,在排序的过程中记录数据个数,找到中位数。首先采用hash() % 100,把数据分到100个文件中,然后对每个文件分别在内存中进行快速排序,再将100个小文件进行合并,并在合并过程中寻找中位数,时间复杂度是O(nlogn)
另外一种方法是,将数据按照数据空间分为0-9999999,10000000-999999999, ……大概50个部分,每一部分存入一个小文件,统计每个小文件中的元素个数,由于文件之间相对有序,可以容易得出中位数是位于哪一个文件之中,并可以得出中位数在该小文件中的排序次序,用相同的方法对小文件进行处理,当文件内容比较小的时候可以直接在内存中进行找中位数操作,对于n个随机数找k小元素的时间复杂度是O(n),所以总的时间复杂度为O(n)
5亿个数找不存在的元素
想法是:将这5亿个数据按照大小分为50部分,0-9999999, 10000000-99999999…并分别存入文件中,对于每一个文件,只用找出每个文件中不存在元素即可
转载于:https://www.cnblogs.com/qianye/archive/2012/11/29/2794533.html
【转】5亿个数找中位数相关推荐
- 算法,求1亿个数的中位数
http://bbs.csdn.net/topics/310150772 可以借鉴一下以下方法的: 有1亿个浮点数,请找出其中最大的10000个.提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相 ...
- Coding: 一亿个数找最大的1000个数
描述 一亿个数找最大的1000个数,要求效率高占用内存少.函数原型为:find_max_data(int* source_data, int* max_data),其中source_data是存放一亿 ...
- 10 亿个数取中位数
10 亿个数取中位数 1.取 16*1024 个数,生成一个 TreeMap .取得最大值 max 和最小值 min. 2.构造一个1024个元素的计数数组 T[i],对最初的 1024 个数按区间计 ...
- 100亿个数中寻找中位数
题目: 在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数:内存限制为512M:请写出算法设计思路: 基本分析: (1)中位数的定义:一个给定排序好的序列,奇数个的话,我们就取中间的一个: ...
- 利用最小堆找出10亿个数中最大的10000个数
最小堆 最小堆是一种完全二叉树,特点是根节点比两个子节点都小(或者根节点比子节点都大) 过程 先找10000个数构建最小堆 依次遍历10亿个数,如果比最小堆的最小值大,则替换这个最小值,并重新构建最小 ...
- 谈从10亿个数中找出前10万个最大的
谈从10亿个数中找出前10万个最大的 期的实验显示10亿个浮点数大概占据3G左右的空间,因此全部一次性读入内存目前在个人PC上是不太现实的.本次讨论不考虑内存等等,只考虑算法. 如果一次性比较排序,然 ...
- 海量数据处理 - 10亿个数中找出最大的10000个数(top K)
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题) 版权声明:本文为博主原创文章,未经博主允许不得转载 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望 ...
- 海量数据处理:如何从10亿个数中,找出最大的10000个数?(top K问题)
一.问题 有 10 亿个不重复的数字,内存中只能放进 1 万个数,怎么找到最大的 10 万个数字? 这道题的思路是,先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的) ...
- 10亿个数中找出最大的10000个数
转载自 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题) 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅 ...
最新文章
- VMware vSphere Client 5.0在官网用讯雷下载出错
- springboot2.3.4集成EhCache缓存框架完整代码
- 通信开源linux,Linux环境进程间通信
- Genesis-3D新手入门——19.UI美化
- docker mysql 漂移_Centos7系统Docker环境下Mysql部署
- JS函数assign
- 防止网线中的信号衰减很重要
- 使用vue-cli3创建项目的时候出错,ERROR command failed: npm install --loglevel error --registry
- php array函数 array_filter 过滤数组中的空值
- 站斧超级浏览器风控系统助力Lazada商家安全管理
- ps换证件照背景颜色
- Java一般操作 对象序列化和反序列化
- Validation 使用
- 高电压放大器与高电流放大器该如何选择使用
- 好书分享 《将来的你一定感谢现在拼命的自己》
- 玩转Redis-干掉钉子户-没有设置过期时间的key
- 微信小程序 —— 倒计时(展示时钟)
- 关于Ramu矿产资源和储量的最新信息
- vue+vant+vux
- 独立模式(Standone Mode)启动Spark
热门文章
- 《系统集成项目管理工程师》必背100个知识点-66工作说明书
- DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
- JS实现失去焦点判断input内容是否大于0
- 过程的首要目的是好的结果
- python百度翻译包_python百度翻译移动端
- php认识正则吗,php正则表达式有什么用
- ise 时钟约束_「新手入门」ISE工程升级到Vivado及板级信号调试技术
- 社区生鲜领军者钱大妈携手神策数据,加速线上线下精准导流促增长
- 聚焦 AI + 大数据全球视野引领行业创新升级
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)