`
liujiahaogood
  • 浏览: 26390 次
  • 性别: 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

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

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

    例如,10个一等于10,10个十等于100,10个百等于1000,而10个千则构成了一万。这些基本的进位规则是学生学习数位顺序和进行数运算的基础。学生需要掌握这些基本的数位进制,才能更好地进行数的读写、比较和运算。 ...

    新北师版四上数学第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、...

    小四数学第7讲:数表(教师版).docx

    由于每三个数中有一个偶数,因此可以将100除以3,得到33余1,这意味着在前99个数中有33个偶数,再加上第100个数也是偶数,最终得出结论,100个数中包含34个偶数。 紧接着,在例2中,我们考察一个更复杂的数列:1, 2...

    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. **加减运算**:进行基础的加减法运算,...

    北师大版四年级上册数学整册单元试卷含答案.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,可以...

    人教版小学数学四年级上册单元测试卷附答案-全册.doc

    - “与最大的五位数相邻的两个数是99999和100000”说明了如何找出一个数的前一个数和后一个数。 - “一个数的百万位上是1,十万位上是3,千位上是6,其余各位上都是0,这个数是1306000”展示了如何根据每个数位上...

    欧拉计划1-50题

    - **问题描述**:在一个1000位的大数中,找到连续五位数字的乘积的最大值。 - **算法思路**: - 遍历1000位数中的每一位,将连续的五位数字作为一个子串提取出来。 - 计算该子串中每个数字的乘积。 - 与当前已知...

Global site tag (gtag.js) - Google Analytics