`
liujiahaogood
  • 浏览: 26151 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

100万个数中找最大的前100个数

阅读更多
基本想法有两个:
1.
算法如下:根据快速排序划分的思想
(1) 递归对所有数据分成[a,b)b(b,d]两个区间,(b,d]区间内的数都是大于[a,b)区间内的数
(2) 对(b,d]重复(1)操作,直到最右边的区间个数小于100个。注意[a,b)区间不用划分
(3) 返回上一个区间,并返回此区间的数字数目。接着方法仍然是对上一区间的左边进行划分,分为[a2,b2)b2(b2,d2]两个区间,取(b2,d2]区间。如果个数不够,继续(3)操作,如果个数超过100的就重复1操作,直到最后右边只有100个数为止。

2.先取出前100个数,维护一个100个数的最小堆,遍历一遍剩余的元素,在此过程中维护堆就可以了。具体步骤如下:
step1:取前m个元素(例如m=100),建立一个小顶堆。保持一个小顶堆得性质的步骤,运行时间为O(lgm);建立一个小顶堆运行时间为m*O(lgm)=O(m lgm);      
step2:顺序读取后续元素,直到结束。每次读取一个元素,如果该元素比堆顶元素小,直接丢弃
如果大于堆顶元素,则用该元素替换堆顶元素,然后保持最小堆性质。最坏情况是每次都需要替换掉堆顶的最小元素,因此需要维护堆的代价为(N-m)*O(lgm);
最后这个堆中的元素就是前最大的10W个。时间复杂度为O(N lgm)。

以上只是我的个人想法,请各位大牛指教
分享到:
评论

相关推荐

    从一亿个数中找出最大的100个 或者n个

    从一亿个数中找出最大的100个 或者n个 用了个堆

    1_1. 产生100个随机数_求其最小值和最大值以及平均值_

    在这个主题中,我们将探讨如何在不同编程语言中生成100个随机数,并计算它们的最小值、最大值和平均值。 首先,让我们从Python开始,这是一种广泛使用的高级编程语言,非常适合这种数据处理任务。在Python中,我们...

    java使用多线程找出最大随机数

    在这个示例代码中,使用了五个线程,每个线程生成2000个随机数,然后比较找出最大值。使用join方法来等待所有线程执行完毕,然后输出最大值。 在这个示例中,使用了静态变量AllMax来记录最大值,每个线程都可以访问...

    万以内数的认识练习题集.doc

    如1000里面有10个百,一百里有10个十。在题目中,通过填空题让学生理解这些关系。 3. 数的大小:最大的三位数是999,最小的是100,最小的四位数是1000。通过比较,学生能更好地理解数的大小和位值的关系。 4. 顺序...

    mysql测试库(100万数据库和世界人口数据库).rar

    在提供的"mysql测试库(100万数据库和世界人口数据库).rar"压缩包中,包含两个重要的文件:`world.sql`和`t100w.sql`,它们为学习和测试MySQL功能提供了丰富的数据集。 `world.sql` 文件通常包含一个名为"world"的...

    二年级下册万以内数的认识.doc

    10个一百是1000,4807由4个千(4000),8个百(800)和7个一组成。 6. **数字的写法和读法**:四千零六写作4006,7050读作七千零五十。 7. **实际应用**:通过四个人的成绩情况推理他们的得分,如小丽是第一名,...

    青岛版二年级下册数学第二单元测试卷(万以内数的认识).docx

    1. 数的构成:文档中提到10个十是100,10个一百是1000,10个一千是一万,这是数位进制的基本规则,10个单位进一位,体现了十进制的特点。 2. 数的读写:如题目要求写出数的读法和写法,比如写作4026,读作四千零二十...

    青岛版四年级上册数学第一单元测试卷(大数知多少——万以上数的认识).docx

    - 近似数为100万的最大数是999999,这是正确的。 13. **选择题解析**: - 与最大的六位数相邻的两个数是999999和1000000,选C。 - 300500读作三百万零五百,选B。 - 最小的自然数是0,选A。 - 分级正确的选项...

    小学数学万以内数的认识近似数PPT教案.pptx

    首先,教学内容包括了对整百数和整千数的熟悉,例如100、200一直到900和1000、2000直至9000等。这些数字是孩子们在学习万以内数时的基础。 接着,教案引导孩子们通过实例来理解近似数。例如,提到狗的种类约有120种...

    新北师版四上数学第1单元《认识更大的数》试卷A.pdf

    - 998300≈100万 - 8000000000=80亿 - 1249990000≈12亿 5. 数的读写: - 一个8位数,千万位、万位、千位都是9,其他数位是0,这个数是9000909000,读作九亿零九十万九千,精确到万位约是90009万。 6. 数的...

    二年级下册数学人教版周测培优卷9 万以内数的认识的能力检测卷(含答案).pdf

    这表明数字中的每一位都有其特定的位置值,个位、十位、百位、千位等,从右往左分别表示1、10、100、1000等,数位的每一个位置都对应一个特定的数位值。 2. 用数字4、0、8可以组成的三位数共有3!=6个,分别是408、...

    1.5 数的产生、十进制计数法及亿以上数的读写.docx

    而最接近100亿的数,需要将99亿9千万这个数与给定的数字进行比较,找出最接近的组合,即8765300000。 综上所述,理解和掌握数的产生、十进制计数法以及亿以上数的读写,是学习数学和计算机科学的基础,它不仅帮助...

    百度、google海量数据搜索算法题解

    方法1是分批读取数据,每次处理100万个数,找出这100万个数中的最大1万个,然后用这些最大值作为阈值过滤掉大部分数据,重复此过程直到找到最大的1万个数。方法2是采用分块策略,比如每100万个数作为一个块,分别找...

    java编程练习题

    - **定义**:最大公约数(GCD)是两个或多个整数共有约数中最大的一个;最小公倍数(LCM)是两个或多个整数公有的倍数中最小的一个。 - **实现思路**: - 使用辗转相除法计算最大公约数。 - 利用最大公约数计算...

    二年级数学10000以内数的认识练习题.docx

    知道10个一百是一千,10个一千是一万,以此类推。 5. **数的构成**:能够根据数字组成不同的数,如2、7、0可以组成六个不同的三位数,理解最大的数和最小数的构造原则。 6. **加减运算**:进行基础的加减法运算,...

    海量数据处理 百度、腾讯、Google面试

    例如,寻找100万个数中最大的前100个数,可以使用一个100个元素的最小堆来实现。 3. **Bit-map**:Bit-map是一种高效的数据存储方式,用一个bit位来表示一个元素的Value。在处理海量数据时,例如有限的内存空间,...

    北师大版四年级上册数学整册单元试卷含答案.docx

    - “最大的六位数是( ),省略万位后面的尾数约是( )万”涉及到数的估算和近似数的概念,最大六位数是999999,省略万位后的尾数即为100万。 - 18K3096≈180 万,这里的K应该是9,因为1893096≈190万;51K096≈...

    四年级上大数的认识练习题(超经典);.doc

    例如题目中的10个一百是1000,100个十万是10000000。 2. **大数的读法与写法**:大数的读法需要遵循中文的规则,例如10030040读作“一千零三万零四十”,三千零八十万零七十写作30800070。对于7496100,读作“七百...

    7、练习二(求近似数).ppt

    6. **找最小和最大的近似数**:如果一个数省略万位后的尾数约等于18万,最小数是175000(四舍五入后为18万),最大数是184999(四舍五入后仍然是18万)。 7. **根据特定条件构造近似数**:使用4、7、9和两个0,可以...

    四年级上册数学一课一练-1.1亿以内数的认识 人教版(含答案).docx

    第15题是应用题,涉及到重量和数量的比较,如100万个1元硬币的重量,与蓝鲸的重量比较,以及搬运十亿个1元硬币需要的人数。 总的来说,这份一课一练覆盖了亿以内数的基本概念,包括数位、数的读写、大小比较、计数...

Global site tag (gtag.js) - Google Analytics