18.6 设计一个算法,给定10亿个数字,找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。

解法:

方法1:排序

按升序排序所有的元素,然后取出前100万个数,时间复杂度为O(nlog(n))

方法2:大顶堆

我们可以使用大顶堆来解题。首先,为前100万个数字创建一个大顶堆

然后,遍历整个数列,将每个元素插入大顶堆,并删除最大的元素。

遍历结束后,我们将得到一个堆,刚好包含最小的100万个数字。这个算法的时间复杂度为O(nlog(m)),其中m为待查找数值的数量。

方法3:选择排序算法(假如你可以改变原始数组)

在计算机科学中,选择排序是个很有名的算法,可以在线性时间内找到数组中第i个最小(或最大)元素。

如果这些元素各不相同,则可以在预期的O(n)时间内找到第i个最小的元素。

转载于:https://www.cnblogs.com/wuchanming/p/4362389.html

careercup-高等难度 18.6相关推荐

  1. careercup-高等难度 18.9

    18.9 随机生成一些数字并传入某个方法.编写一个程序,每当收到新字符数字时,找出并记录中位数. 类似:设计一个数据结构,包括两个函数,插入数据和获得中位数 解法: 一种解法是使用两个优先级堆:一个大 ...

  2. careercup-高等难度 18.5

    18.5 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(也即相隔几个单词).有办法在O(1)时间里完成搜索操作吗?解法的空间复杂度如何? 解法1:我们假设单词wo ...

  3. 小学数学开灯问题_小学一年级数学题库:开灯问题(高等难度)

    新东方小学生资料下载 姓名 手机号 短信验证码 图片验证码 年级 请选择 学前 一年级 二年级 三年级 四年级 五年级 六年级 行政区 请选择 请选择 请选择 {"name":{& ...

  4. 2016华为软件精英挑战赛:赛题及其答疑汇总

    注:本文文字均摘自官方指定网站和论坛,权威且可信,答疑见中间部分,非常全,众玩家可放心阅读. 同时文末给出了包括自己在内的诸多玩家的解法. 前言 赛题源自"未来网络"业务发放中的路 ...

  5. MySQL基础 练习题2

    1. 查询 students 表中的所有记录的 sname.ssex 和 class 列. 2. 查询教师所有的单位即不重复的 depart 列. 3. 查询 students 表的所有记录. 4. ...

  6. 语义分割--Not All Pixels Are Equal:Difficulty-Aware Semantic Segmentation via Deep Layer Cascade

    Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade CVPR2017 本文针 ...

  7. 你面试稳了!通关LeetCode刷题完整攻略,省时又高效

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:穷码农 来源:https://zhuanlan.zhihu.com/p/10 ...

  8. 零基础学python电子书-零基础入门学习Python epub高清电子书

    作者: 小甲鱼 出版社: 清华大学出版社 出版年: 2016-11-1 下载地址(回复可见) 此处内容需要评论回复后 内容简介 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过 ...

  9. 201571030130/201571030124《小学四则运算练习软件软件需求说明》结对项目报告

    需求调查的分析说明: 1.首先:我们的需求分析通过工具墨刀构建出上一个实验中我们设计的软件原型(因为我们上一次的实验的图形用户界面无法让用户切实体验,故利用墨刀原型工具进行我们关于软件想法的还原),并 ...

最新文章

  1. Oracle RAC错误之--oifcfg错误案例
  2. VS 2012 如何发布 ASP.NET 网站到本地IIS
  3. PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settin
  4. weblogic线程阻塞性能调优(图解)转
  5. 关于解决Path被大改,无法直接编辑恢复的问题
  6. linux 信号_Linux信号量(1)-SYSTEM V
  7. 安装运行symfony框架编写的edusoho开源程序
  8. 直接保存 DataFrame 表格到本地,这个“骚操作”你还不知道?
  9. java 中计算时间差
  10. linux 中ifconfig命令 结果解释
  11. random随机数类
  12. windows 程序员计算器
  13. 简简单单汇率换算HTML代码
  14. 介绍 PostgreSql 两个有用的比较操作
  15. 网络计算机应急处理,国家计算机网络应急技术处理协调中心-计算机网络安全应急处理.ppt...
  16. 聊聊什么是探索式测试
  17. php条件查询,PHP-----多条件查询(示例代码)
  18. (转)对话云象CEO黄步添:区块链未来两到三年不会爆发
  19. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之6---移动增值业务概述
  20. PowerBI-时间智能函数-PREVIOUS系列

热门文章

  1. [转载]Informix Dynamic Server维护手册
  2. HttpContext(三)-Request
  3. [原]RHCS集群的服务切换测试札记
  4. 微软OTech第二次会议(广州站)
  5. freemarker常见语法大全
  6. Zookeeper 使用
  7. webpack --- 在项目中使用React
  8. bootstrap --- 分页
  9. Lodash 中文文档 (v3.10.1) - “Number” 方法
  10. GNS3中不同型号路由器支持的模块表