原文:1亿个数中找出最小的100个数--最小堆

版权声明:本文为博主原创文章,未经博主允许不得转载。 https: blog.csdn.net jj jj article details ...

2018-09-22 10:54 0 850 推荐指数:

查看详情

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

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

Tue May 01 18:53:00 CST 2018 0 2403
面试题-10亿个数找出最大的10000个数(top K问题)

一个较好的方法:先拿出10000个建立小根堆,对于剩下的元素,如果大于堆顶元素的值,删除堆顶元素,再进行插入操作,否则直接跳过,这样知道所有元素遍历完,堆的10000个就是最大的10000个。时间复杂度: m + (n-1)logm = O(nlogm) 优化的方法:可以把所有10亿个数据分组 ...

Fri Mar 06 04:19:00 CST 2020 0 1808
如何从100个数找出最大的前100个数

1. 算法如下:根据快速排序划分的思想 (1) 递归对所有数据分成[a,b)b(b,d]两个区间,(b,d]区间内的都是大于[a,b)区间内的 (2) 对(b,d]重复(1)操作,直到最右边的区间个数小于100个。注意[a,b)区间不用划分 (3) 返回上一个区间,并返回此区间的数字 ...

Mon Apr 02 08:12:00 CST 2018 0 1257
海量数据处理 - 10亿个数找出最大的10000个数(top K问题)

前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的(10000中最小的),将这个数替换堆顶 ...

Sat Feb 16 04:10:00 CST 2019 2 5644
Python找到一个数最小的5个数

nums = [1,8,2,23,7,-4,18,23,24,37,2]//创建数组 for i in range(5): print(nums.index(min(nums)))//nums.index()//输出一个数的索引1,min(nums)选择nums最小 ...

Mon Aug 09 06:21:00 CST 2021 0 149
JAVA——使用java.lang.Math类,生成100个0~99之间的随机整数,找出他们之中的最大者和最小者并统计大于50的个数

我认为这道题的关键就是你要知道如何去生成100以内的随机整数,只要成功生成了,其他的都挺好写的。 随机生成整数的有关代码 所以建立一个类,在该类完成随机整数的生成,最大值最小值的寻找,和数与50的比较。 这里还是要注意,在每次调用 ...

Tue Oct 20 23:15:00 CST 2020 0 565
从数组找出最大的和最小

给定一整形数组a,要求从中找出最大的最小,并计算时间复杂度。 实现1: 遍历数组,每次取数组中一个元素, 分别与当前最大值和最小值进行比较,时间复杂度O(2n ...

Wed May 02 02:04:00 CST 2012 0 12402
找出2n+1个数不成对的那个

问题定义:有2n+1个数,只有一个单着,别的都是成对的,找出这个单着的。比如:2 1 3 2 1。3是答案。 思路一:暴力搜索——每个数都和其他比较,找不到相同的,就得到了结果。时间复杂度为o(n2) 思路二:排序搜索——先给序列排个序,之后从前往后一对一对的找,直到不是成对的为止 ...

Thu Apr 04 06:42:00 CST 2013 13 2320
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM