`
cynhafa
  • 浏览: 155798 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从100万个整数里找出100个最大的数

 
阅读更多

100万个整数里找出100个最大的数(用哪种算法效率高)



以下为可能性最大的答案:
部分排序?找出一个支点,把数组分为左右,一直分...


可以参考一下STL中nth_element的实现吧。


选择第k大数有O(n)的算法,过程衍生自快排


呵呵我看懂啦,是个好算法!顶!


取前100个数排序,放入链表中.依次取后面的数与100个数的最小数比较,若取到的数比最小数大,则插入链表中,同时挤掉最小的数.这个过程中使用的链表,因为大小是固定的,所以只需要一开始分配101个节点,用一个指针记录那个空节点,则在整个插入删除过程序中,可以不涉及到内存分配.


引用 12 楼 wyx8421 的回复:
用堆排序只取前100个可以么?时间复杂度好像是O(m(logn))

27楼的做法确实比飞雪前面提的数组要节省空间



27楼的我分析一下。
在n个数中取出m个最大的:
1、排序m个数,mlogm
2、每插入一个数,比较次数取平均值m/2,共(n-m)*m/2
所以总复杂度:mlogm + (n-m)*m/2 = (n - m + 2logm)*m/2
m << n 时,为O(nm);
m = k*n 时,为O(n^2);

而我方法的最坏情况不会超过完全排序一个数组(肯定不会超过,
因为每次递归都丢弃了数组的一半)。
分享到:
评论

相关推荐

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

    1.产生100个随机数

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

    主要为大家详细介绍了java使用多线程找出最大随机数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    c程序设计习题参考(谭浩强三版)习题参考解答

    9.7分别用函数和带参的宏,从3个数中找出最大数。 70 9.8试述“文件包含”和程序文件的连接(link)的概念,二者有何不同? 71 9.9用条件编译法实现以下功能: 71 第10章 指针 72 10.1输入3个整数,按由小到大的顺序...

    Java经典编程题(附答案)

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足 如下...

    java 经典习题.doc

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,...

    java面试题

    堆和堆栈的区别、常用排序算法分析与实现(Java版) 从100万个整数里找出100个最大的数(用哪种算法效率高)

    各种c++经典例题,多种编程语言

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 【程序4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 【程序5】 题目:输入三个整数x,y,z,请把这三...

    最新JAVA编程题全集_50题及答案

    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=...

    大数据的一些面试题.pdf

    扩展: 问题实例: 1).2.5亿个整数中找出不重复的整数的个数,内存空间不⾜以容纳这2.5亿个整数。 有点像鸽巢原理,整数个数为2^32,也就是,我们可以将这2^32个数,划分为2^8个区域(⽐如⽤单个⽂件代表⼀个区域),...

    程序员二进制计算器 v1.36

    一个数的后面,可以跟有倍率运算符,表示该数乘以相应的倍数,例如: 2w = 20000 (2万) 13y = 1300000000 (13亿) 4k = 4096 3% = 0.03 (百分之3) 详见“倍率运算”部分。 三 运算结果的输出格式 1-指定...

    EXCEL集成工具箱V6.0

    隐藏选项卡,这个插件还模拟了一个Excel2003样式的菜单,目的就是方便那些从Excel2003转向使用2007或2010版的朋友使用。 ===================================================================================...

    EXCEL集成工具箱V8.0完整增强版(精简)

    隐藏选项卡,这个插件还模拟了一个Excel2003样式的菜单,目的就是方便那些从Excel2003转向使用2007或2010版的朋友使用。 ===================================================================================...

    Facebook AI实验室开源的相似性搜索库Faiss.zip

    35 分钟内从 Yfcc100M 数据集的 9500 万张图像上构建一个高准确度的 k-NN 图,也可以在 12 个小时内在 4 个 Maxwell Titan X GPU 上构建一个连接了 10 亿个向量的图。现在Facebook已将该方法(Faiss)开源,使大家...

    破浪分红权返利系统基础版v1.0.zip

    一:会员消费累计500元为一单,一单为一个分红权,继续累计到1000元为2单,即二个分红权,1500元为3单,三单就是三个分红权,以此类推,不限制时间,只要整数新增到一个新的500的点,就会新增加一个分红权,在商城...

    整理后java开发全套达内学习笔记(含练习)

    宣告变量名称的同时,加上“final”关键词来限定,这个变量一但指定了值,就不可以再改变它的值 如:final int n1= 10; n1=20; 这就会报错 输出命令: System.out.println() 会自动换行的打印 System.out....

Global site tag (gtag.js) - Google Analytics