原文链接:http://www.cnblogs.com/qianye/archive/2012/11/29/2794533.html

找中位数最容易想到的方法就是,先对序列进行排序,取中位数,然而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. 算法,求1亿个数的中位数

    http://bbs.csdn.net/topics/310150772 可以借鉴一下以下方法的: 有1亿个浮点数,请找出其中最大的10000个.提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相 ...

  2. Coding: 一亿个数找最大的1000个数

    描述 一亿个数找最大的1000个数,要求效率高占用内存少.函数原型为:find_max_data(int* source_data, int* max_data),其中source_data是存放一亿 ...

  3. 10 亿个数取中位数

    10 亿个数取中位数 1.取 16*1024 个数,生成一个 TreeMap .取得最大值 max 和最小值 min. 2.构造一个1024个元素的计数数组 T[i],对最初的 1024 个数按区间计 ...

  4. 100亿个数中寻找中位数

    题目: 在一个大文件中有100亿个32位整数,乱序排列,要求找出中位数:内存限制为512M:请写出算法设计思路: 基本分析: (1)中位数的定义:一个给定排序好的序列,奇数个的话,我们就取中间的一个: ...

  5. 利用最小堆找出10亿个数中最大的10000个数

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

  6. 谈从10亿个数中找出前10万个最大的

    谈从10亿个数中找出前10万个最大的 期的实验显示10亿个浮点数大概占据3G左右的空间,因此全部一次性读入内存目前在个人PC上是不太现实的.本次讨论不考虑内存等等,只考虑算法. 如果一次性比较排序,然 ...

  7. 海量数据处理 - 10亿个数中找出最大的10000个数(top K)

    海量数据处理 - 10亿个数中找出最大的10000个数(top K问题) 版权声明:本文为博主原创文章,未经博主允许不得转载 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望 ...

  8. 海量数据处理:如何从10亿个数中,找出最大的10000个数?(top K问题)

    一.问题 有 10 亿个不重复的数字,内存中只能放进 1 万个数,怎么找到最大的 10 万个数字? 这道题的思路是,先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的) ...

  9. 10亿个数中找出最大的10000个数

    转载自  海量数据处理 - 10亿个数中找出最大的10000个数(top K问题) 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅 ...

最新文章

  1. VMware vSphere Client 5.0在官网用讯雷下载出错
  2. springboot2.3.4集成EhCache缓存框架完整代码
  3. 通信开源linux,Linux环境进程间通信
  4. Genesis-3D新手入门——19.UI美化
  5. docker mysql 漂移_Centos7系统Docker环境下Mysql部署
  6. JS函数assign
  7. 防止网线中的信号衰减很重要
  8. 使用vue-cli3创建项目的时候出错,ERROR command failed: npm install --loglevel error --registry
  9. php array函数 array_filter 过滤数组中的空值
  10. 站斧超级浏览器风控系统助力Lazada商家安全管理
  11. ps换证件照背景颜色
  12. Java一般操作 对象序列化和反序列化
  13. Validation 使用
  14. 高电压放大器与高电流放大器该如何选择使用
  15. 好书分享 《将来的你一定感谢现在拼命的自己》
  16. 玩转Redis-干掉钉子户-没有设置过期时间的key
  17. 微信小程序 —— 倒计时(展示时钟)
  18. 关于Ramu矿产资源和储量的最新信息
  19. vue+vant+vux
  20. 独立模式(Standone Mode)启动Spark

热门文章

  1. 《系统集成项目管理工程师》必背100个知识点-66工作说明书
  2. DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
  3. JS实现失去焦点判断input内容是否大于0
  4. 过程的首要目的是好的结果
  5. python百度翻译包_python百度翻译移动端
  6. php认识正则吗,php正则表达式有什么用
  7. ise 时钟约束_「新手入门」ISE工程升级到Vivado及板级信号调试技术
  8. 社区生鲜领军者钱大妈携手神策数据,加速线上线下精准导流促增长
  9. 聚焦 AI + 大数据全球视野引领行业创新升级
  10. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)