基本想法有两个:
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个随机数,并计算它们的最小值、最大值和平均值。 首先,让我们从Python开始,这是一种广泛使用的高级编程语言,非常适合这种数据处理任务。在Python中,我们...
在这个示例代码中,使用了五个线程,每个线程生成2000个随机数,然后比较找出最大值。使用join方法来等待所有线程执行完毕,然后输出最大值。 在这个示例中,使用了静态变量AllMax来记录最大值,每个线程都可以访问...
如1000里面有10个百,一百里有10个十。在题目中,通过填空题让学生理解这些关系。 3. 数的大小:最大的三位数是999,最小的是100,最小的四位数是1000。通过比较,学生能更好地理解数的大小和位值的关系。 4. 顺序...
在提供的"mysql测试库(100万数据库和世界人口数据库).rar"压缩包中,包含两个重要的文件:`world.sql`和`t100w.sql`,它们为学习和测试MySQL功能提供了丰富的数据集。 `world.sql` 文件通常包含一个名为"world"的...
10个一百是1000,4807由4个千(4000),8个百(800)和7个一组成。 6. **数字的写法和读法**:四千零六写作4006,7050读作七千零五十。 7. **实际应用**:通过四个人的成绩情况推理他们的得分,如小丽是第一名,...
1. 数的构成:文档中提到10个十是100,10个一百是1000,10个一千是一万,这是数位进制的基本规则,10个单位进一位,体现了十进制的特点。 2. 数的读写:如题目要求写出数的读法和写法,比如写作4026,读作四千零二十...
- 近似数为100万的最大数是999999,这是正确的。 13. **选择题解析**: - 与最大的六位数相邻的两个数是999999和1000000,选C。 - 300500读作三百万零五百,选B。 - 最小的自然数是0,选A。 - 分级正确的选项...
首先,教学内容包括了对整百数和整千数的熟悉,例如100、200一直到900和1000、2000直至9000等。这些数字是孩子们在学习万以内数时的基础。 接着,教案引导孩子们通过实例来理解近似数。例如,提到狗的种类约有120种...
- 998300≈100万 - 8000000000=80亿 - 1249990000≈12亿 5. 数的读写: - 一个8位数,千万位、万位、千位都是9,其他数位是0,这个数是9000909000,读作九亿零九十万九千,精确到万位约是90009万。 6. 数的...
这表明数字中的每一位都有其特定的位置值,个位、十位、百位、千位等,从右往左分别表示1、10、100、1000等,数位的每一个位置都对应一个特定的数位值。 2. 用数字4、0、8可以组成的三位数共有3!=6个,分别是408、...
而最接近100亿的数,需要将99亿9千万这个数与给定的数字进行比较,找出最接近的组合,即8765300000。 综上所述,理解和掌握数的产生、十进制计数法以及亿以上数的读写,是学习数学和计算机科学的基础,它不仅帮助...
方法1是分批读取数据,每次处理100万个数,找出这100万个数中的最大1万个,然后用这些最大值作为阈值过滤掉大部分数据,重复此过程直到找到最大的1万个数。方法2是采用分块策略,比如每100万个数作为一个块,分别找...
- **定义**:最大公约数(GCD)是两个或多个整数共有约数中最大的一个;最小公倍数(LCM)是两个或多个整数公有的倍数中最小的一个。 - **实现思路**: - 使用辗转相除法计算最大公约数。 - 利用最大公约数计算...
知道10个一百是一千,10个一千是一万,以此类推。 5. **数的构成**:能够根据数字组成不同的数,如2、7、0可以组成六个不同的三位数,理解最大的数和最小数的构造原则。 6. **加减运算**:进行基础的加减法运算,...
例如,寻找100万个数中最大的前100个数,可以使用一个100个元素的最小堆来实现。 3. **Bit-map**:Bit-map是一种高效的数据存储方式,用一个bit位来表示一个元素的Value。在处理海量数据时,例如有限的内存空间,...
- “最大的六位数是( ),省略万位后面的尾数约是( )万”涉及到数的估算和近似数的概念,最大六位数是999999,省略万位后的尾数即为100万。 - 18K3096≈180 万,这里的K应该是9,因为1893096≈190万;51K096≈...
例如题目中的10个一百是1000,100个十万是10000000。 2. **大数的读法与写法**:大数的读法需要遵循中文的规则,例如10030040读作“一千零三万零四十”,三千零八十万零七十写作30800070。对于7496100,读作“七百...
6. **找最小和最大的近似数**:如果一个数省略万位后的尾数约等于18万,最小数是175000(四舍五入后为18万),最大数是184999(四舍五入后仍然是18万)。 7. **根据特定条件构造近似数**:使用4、7、9和两个0,可以...
第15题是应用题,涉及到重量和数量的比较,如100万个1元硬币的重量,与蓝鲸的重量比较,以及搬运十亿个1元硬币需要的人数。 总的来说,这份一课一练覆盖了亿以内数的基本概念,包括数位、数的读写、大小比较、计数...