从100万个整数里找出100个最大的数
来源:互联网 发布:python软件 编辑:程序博客网 时间:2024/05/21 21:34
100万个整数里找出100个最大的数(用哪种算法效率高)
以下为可能性最大的答案:
部分排序?找出一个支点,把数组分为左右,一直分...
可以参考一下STL中nth_element的实现吧。
选择第k大数有O(n)的算法,过程衍生自快排
呵呵我看懂啦,是个好算法!顶!
取前100个数排序,放入链表中.依次取后面的数与100个数的最小数比较,若取到的数比最小数大,则插入链表中,同时挤掉最小的数.这个过程中使用的链表,因为大小是固定的,所以只需要一开始分配101个节点,用一个指针记录那个空节点,则在整个插入删除过程序中,可以不涉及到内存分配.
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);
而我方法的最坏情况不会超过完全排序一个数组(肯定不会超过,
因为每次递归都丢弃了数组的一半)。
- 从100万个整数里找出100个最大的数
- 从100万个整数里找出100个最大的数
- 从 100 万个数里找出最大的前 100 个
- 也论从1亿个整数中找出最大的1万个(上)
- 也论从1亿个整数中找出最大的1万个(下)
- 从100亿个整数中找出最大/最小的1000个整数
- n个数里找出前m个数(或者 从10亿个浮点数中找出最大的1万个)
- 面试-从10亿个浮点数中找出最大的1万个
- [转]从10亿个浮点数中找出最大的1万个
- 面试-从10亿个浮点数中找出最大的1万个
- 从10亿个浮点数中找出最大的1万个
- 满大街都是这种烂题目------从100亿个整数中找出最大的1000个整数
- 给出10个整数,从中取走一个,从剩下的9个数里怎么找出哪个数被取走了。如果有1000万个数,取走一个数,怎么找出哪个数被取走
- 有10亿个浮点数,从中找出1万个最大的数。
- 有10亿个浮点数,从中找出1万个最大的数。
- 有10亿个浮点数,从中找出1万个最大的数。
- C语言: 键盘输入任意10个整数,找出最大数及最大数的序号。
- 考察最大元素:从n个整数找出最大者
- VC++常用数据类型及其操作详解 [转]
- ibatis 分页
- 波形仿真的结果总是一样,虽然我改动了相关的IO与设置
- 我的高项
- android onTouchEvent和onInterceptTouchEvent区别
- 从100万个整数里找出100个最大的数
- python 中对配置文件(如.ini文件)进行读写等操作ConfigParser模块
- 分辨率低的问题
- linux驱动开发常用函数及函数
- 算法复杂度的差分方程推导(n*log n的扩展)
- cvMorphologyEx —不推荐使用
- [转]WinCE 6.0 增加IOCTL以及在应用中读取调试串口输入
- 看来我是那种不适合打理博客的人。。
- C# const.static.readonly.