常见面试题之一:50亿个整数,内存限制为1G,找出中位数。

50亿个整数用bitmap来存储的话,大约150M的空间就足够了。

下面是具体的算法,用PHP实现。

define("MASK", 0x1f); $source = array(1, 74, 4, 256, 1024, 110, 111, 112, 123, 112, 100); $array = array(); $count = 0; foreach($source as $num) { set($num); // add to bit map } $count = intval($count >> 1) + 1; // cal middle number for($i = 0;;$i++) { // travel the bit map and find the middle number $num = $array[$i]; if(!$num) { continue; } $sum = 0; while($num) { if($num & 0x1) { if(!--$count) { echo ($i << 5) + $sum; exit; } } $num >>= 1; $sum++; } } /* * set number to bit map */ function set($i) { global $array; global $count; $temp = (1 << ($i & MASK)); $array[$i >> 5] |= $temp; if($temp) { $count++; } }

用bitmap实现中位数的算法相关推荐

  1. 白话空间统计番外篇:中位数中心算法

    昨天在介绍中位数中心算法的时候,挖了个巨大的坑,结果导致老夫一夜没有睡好,脑子里面飞来飞去全部都是各种选择和迭代算法,今天终于下定决心把这个坑给填上. 其实我一直是不愿意填算法坑的--主要是自己的数学 ...

  2. C语言分治算法求中位数,【算法复习】分治算法

    Outline 分治思想和递归表达式 大整数乘法 矩阵乘法的Strassen算法 快速傅里叶变化 基于分治的排序 merge-sort排序 快速排序 排序的下界问题 中位数和顺序统计量 最邻近点对 凸 ...

  3. 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)

    中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...

  4. BFPRT(中位数的中位数)算法

    BFPRT 算法 又称为 "中位数的中位数算法",该算法由 Blum.Floyd.Pratt.Rivest.Tarjan 在1973年提出,最坏时间复杂度为 O(n),最差的空间复 ...

  5. webjs求数组的中位数‘_算法:一道常见的数组题,但很多人却写不出来(JAVA)...

    给定两个数组,求数组的中位数 数组 num1=[1,2,3]. 数组num2=[4,5] .中位数=3 解题思路:两个数组合并,放到一个新的数组,数组内的元素要有序.然后就是求中位数的数学方式. [机 ...

  6. 【数据结构与算法】之“寻找两个正序数组的中位数”的求解思路和算法示例

    一.题目要求 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2,请找出并返回这两个正序数组的中位数 . 算法的时间复杂度应该为 O(log (m+n)) . 示例 1 ...

  7. 两个矩阵是否相交的算法_算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕...

    最热的三伏天来了,相信有许多小伙伴们都已马不停蹄的在准备各大厂的秋招提前批了吧,不知算法与数据结构会不会成为你的坎? 恰好,我这两天花了点时间,整理了些各大厂(Google+百度+Alibaba+字节 ...

  8. 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕

    相信有许多小伙伴们都已马不停蹄的在准备各大厂的秋招提前批了吧,不知算法与数据结构会不会成为你的坎? 恰好,我这两天花了点时间,整理了些各大厂(Google+百度+Alibaba+字节+Tencent+ ...

  9. 求两个有序数组的中位数或者第k小元素

    问题:两个已经排好序的数组,找出两个数组合并后的中位数(如果两个数组的元素数目是偶数,返回上中位数). 设两个数组分别是vec1和vec2,元素数目分别是n1.n2. 算法1:最简单的办法就是把两个数 ...

最新文章

  1. Linux下C++中可使用的3种Hook方法
  2. 【虚拟化实战】VM设计之一vCPU
  3. 微软开源的自动机器学习工具上新了:NNI概览及新功能详解
  4. 计算机视觉工程师一天都大致在做些什么?
  5. Cell子刊:建立因果关系-合成菌群在植物菌群研究中的机会
  6. php调用以太坊geth API说明
  7. facebook 图像比赛_使用Facebook的Detectron进行图像标签
  8. php json to object,PHP JSON_FORCE_OBJECT函数实现强转对象
  9. RPC Over HTTPS 访问Exchange 邮箱
  10. WebSocket使用sendObject(Object arg0)向页面方法发送对象
  11. mysql 密码忘了_mysql8.0以上版本安装配置及忘记密码时重置
  12. UE4_屏幕位置与世界位置的相互转化
  13. 谷歌浏览器提示因应用程序的并行配置不正确无法启动
  14. 一分钟教程:绘制中国地图
  15. uni-app 插入视频播放器
  16. PolyLaneNet:基于深度多项式回归的车道估计(PolyLaneNet: Lane Estimation via Deep Polynomial Regression)
  17. 色彩空间与色彩模型 RGB/CMYK/YCbCr/HSB/HSI/HSV
  18. Hypervisor 简介
  19. 目前四种swift代码格式化工具
  20. 计算机专业买什么台式电脑,电脑系统那个好 台式电脑装什么系统好

热门文章

  1. 神经网络知识专题总结!
  2. 内推 58 人拿到微软 offer!这位大佬有多强?
  3. 引争议!硕导提议高校教师应多配偶,这样就能多生娃!高校的处理通报来了...
  4. Deep Non-Line-of-Sight Reconstruction:深度非视域重建
  5. 深圳、长沙高校排名飙升,清北坐实亚洲大学Top2,留学深造还去啥新港日| 泰晤士2020亚洲大学榜...
  6. 90 后女科学家,四年完成清华大学硕博连读,解决多个世界级难题
  7. 文本分类的目的和分类的方法
  8. 爬虫之xpath语法-常用节点选择语法
  9. 固件模块之间的关系 C语言里面的模块
  10. 2006年上半年 网络工程师 上下午试卷【附带答案】