寻找最大的第K个数

原创 2012年03月30日 10:41:16

在一个无序数组中,找出最大的第K个数,数组大小为N。


算法很多。比较好的算法有

1、比较法(简单,当K小时可以考虑)

2、快排法(平均时间好)

3、堆。两种方法

 3、1 大堆:存储所有N个元素

 3、2 K堆:存储K个元素

4、压缩区间(很好的算法,尤其是这些数是整数的时候)

还有其它方法,可以参考以下网址。注意,下面那些总结得也不一定很好。

http://www.binghe.org/2011/05/find-kth-largest-number-in-disorder-array/

http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html

寻找最大K个数topK算法

寻找一个数组中,最大的K个数,例如,我们的数组 int treeNodeValue[]={5,3,7,2,4,6,8,9,0,1}; 寻找最大的三个数,k=3;这三...
  • jpsiyu
  • jpsiyu
  • 2013年10月27日 09:07
  • 504

【编程之美】读书笔记:寻找最大的K个数[转帖]

问题:查找大量无序元素中最大的K个数。          解法一:该解法是大部分能想到的,也是第一想到的方法。假设数据量不大,可以先用快速排序或堆排序,他们的平均时间复杂度为O(N*logN),...
  • leo115
  • leo115
  • 2012年10月02日 21:58
  • 1685

编程之美 读书笔记(寻找最大的k个数)

实际的情况我觉得往往要考虑到数的范围,数的特点(整数还是浮点,重复多不多)以及K与数组长度N的比例关系,数组长度N是否超出内存大小等等因素。 问题:有很多无序的数,姑且假定它们各不相等,怎么选出其中...

编程之美2.5 “寻找最大K个数”

解法二用快速排序划分的方法 #include #include using namespace std; const int K=5; int Partition(int data[],int ...

编程之美 -- 2.5 寻找最大的K个数(快排方法)

题目描述 寻找N个数字中最大的K个数字 package chapter_2_binary; import java.util.Random; import java.util.Scann...

寻找最大的K个数 (C语言实现)

题目:100亿个整数,求最大的1万个数,并说出算法的时间复杂度   算法:如果把100亿个数全部读入内存,需要100 0000 0000 * 4B 大约40G的内存,这显然是不现实的。 我们可以...
  • hysfwjr
  • hysfwjr
  • 2013年05月06日 15:47
  • 299

寻找最大的K个数 (C语言实现)

题目:100亿个整数,求最大的1万个数,并说出算法的时间复杂度   算法:如果把100亿个数全部读入内存,需要100 0000 0000 * 4B 大约40G的内存,这显然是不现实的。 我们可以...

寻找最大的K个数--递归解法

算法思想:使用快排中的思想,随机从数组中选择一个元素x,将数组元素分成两部分Sa和Sb,其中Sa>x,Sb 1. Sa中元素个数小于K,Sa中所有的数和Sb中最大的K-length(Sa),就是S中...

编程之美 读书笔记(寻找最大的k个数)

实际的情况我觉得往往要考虑到数的范围,数的特点(整数还是浮点,重复多不多)以及K与数组长度N的比例关系,数组长度N是否超出内存大小等等因素。 问题:有很多无序的数,姑且假定它们各不相等,怎么选出其中...
  • zyq0335
  • zyq0335
  • 2012年05月09日 20:38
  • 1121

编程之美 -- 2.5 寻找最大的K个数(堆排序方法)

题目描述 寻找N个数字中最大的K个数字 package chapter_2_binary; import java.util.Scanner; /** * @author...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:寻找最大的第K个数
举报原因:
原因补充:

(最多只允许输入30个字)