`

从10000000个元素里面找出最大的前100个

 
阅读更多

           如题,从最大的10000000个元素里面找出最大的前100个,下面是我的代码实现:

         

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Random;
import java.util.logging.Logger;


public class FixSizedPriorityQueue<E extends Comparable> {
	private final static Logger logger = Logger.getLogger(FixSizedPriorityQueue.class.getName());
	
	private PriorityQueue<E> queue;
	private int maxSize; // 堆的最大容量

	public FixSizedPriorityQueue(int maxSize) {
		if (maxSize <= 0)
			throw new IllegalArgumentException();
		this.maxSize = maxSize;
		this.queue = new PriorityQueue(maxSize, new Comparator<E>() {
			@Override
			public int compare(E o1, E o2) {
				return o1.compareTo(o2);
			}
		});
	}

	public void add(E e) {
		if (queue.size() < maxSize) { 
			queue.add(e);
		} else { 
			E peek = queue.peek();
			if (e.compareTo(peek) > 0) {
				queue.poll();
				queue.add(e);
			}
		}
	}
	
	public PriorityQueue<E> getQueue(){
		return queue;
	}

	
	public static void main(String[] args) {
		final int length = 10000000;
		final int maxSize = 100;
		
		FixSizedPriorityQueue<Integer> fixedQueue = new FixSizedPriorityQueue<Integer>(maxSize);
		Random random = new Random();
		for(int i =1; i < length; i++){
			fixedQueue.add(random.nextInt(i));
		}
		
		PriorityQueue<Integer> queue = fixedQueue.getQueue();
		Object obj = queue.poll();
		while(obj != null){
			logger.info(obj.toString());
			obj = queue.poll();
		}
	}
}

 

0
1
分享到:
评论

相关推荐

    Python实现从N个数中找到最大的K个数

    如何在某集合里面找出最大或最小的K个元素。 解决思路: 找出最大或最下的K个元素,可以使用Python库中的heapq模块,该模块提供两个函数nlargest()求最大K个和nsmallest()求最小K个。 下面我们举例说明: import ...

    C语言找出数组中的特定元素的算法解析

    问题描述:一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。  思路:如果能用两个辅助数组,那么相对来说...

    常见面试算法题目

    3. 1~100共一百个自然数,放入一个只有99个元素的数组中,找出没有被放入数组的这个数; 4. 字符串的反转输出 5. 截取字符串, 如果该字符串是“abc我的”,当截取的字节数是3时候就是"abc',如果是4,依然是 abc,也...

    c语言实验报告全(附代码)

    有一个n×m的矩阵,要求找出其中值最大的那个元素所在的行号和列号,以及该元素之值。 林大OJ (951题) Input 输入数据有多组,每组第1行有2个正整数m和n(2 ,n ),接下来有m行n列的数据a(ij),(1 (ij)&lt;=100); ...

    蓝桥杯C/C++省赛:排它平方数

    具有这样特点的6位数还有一个,请你找出它! 再归纳一下筛选要求: 1. 6位正整数 2. 每个数位上的数字不同 3. 其平方数的每个数位不含原数字的任何组成数位 答案是一个6位的正整数。 思路分析 暴力解决: 从最小的...

    软件界面设计工具_3款合集

    由于它里面的控件同样可以设置下一步的响应动作,所以从总体上来看,众多原型就像一个树状结构,而其中的父节点就是图二中的设置窗体了。这种结构具有一个很大的好处:无论你完成了多个界面的原型,只需要它们之间有...

    Leetcode的ac是什么意思-LeetCode:练习LeetCode

    这题是给你一个整数的数组,然后给你一个目标值,让你从这个数组中找出两个数相加等于这个目标值的数组索引值(不能是同一个元素)。 第一种解题思路就是两个for循环,第二个for循环的起始变量比第一个for循环起始...

    javascript入门笔记

    从弹框中录入一个数字表示考试成绩(score) 如果 成绩为 100 分 ,提示 :满分 如果 成绩 &gt;= 90 分 ,提示 :优 如果 成绩 &gt;= 80 分 ,提示 :良 如果 成绩 &gt;= 60 分 ,提示 :及格 否则 :提示 不及格 2、函数...

    javalruleetcode-java_boy_offer:java_boy_offer

    算法题(leetcode55题):给一个数组,例如[1,2,3,4,5],a[i]表示在该位置可以向前行走的最大距离,判断是否可以到达数组的最后一个元素。 2 场景题:让你设计一个微信发红包的api,你会怎么设计,不能有人领到的红包...

    世界500强面试题.pdf

    1.5.8. 给出一个数列,找出其中最长的单调递减(或递增)子序列..............121 1.5.9. 四对括号可以有多少种匹配排列方式.................................................124 1.5.10. 输入一个正数 n,输出...

    超级有影响力霸气的Java面试题大全文档

     SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。...

    java 面试题 总结

    对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以...

    MFC数字图像处理(BMP格式读取 保存 DFT FFT 直方图 色调均化 缩放 模糊 锐化 滤镜 形态学处理 曲线 裁剪 灰度图 彩色图 自动阈值)

    在对话框中会看到一个9*9的结构元素方阵,可以通过使用鼠标左键点击来改变结构元素的形状,双击鼠标为还原结构元素。 设定好结构元素后可以选择操作的四种方式,选择后便会得到处理后的图像了,十分方便。 当然,...

    AspUpload.zip

    下载说明 ...REGSVR32 c:\AspUploadDir\AspUpload.dll ...这个可选的第二个参数指定是否一个文件大于最大字节数时候是被截断。(如果设置为fase,或者忽略。)或者遇上错误就放弃(如果设置发false)强制

    php常用算法(doc)

    思路:每一行的第一位和最后一位是1,没有变化,中间是前排一位与左边一排的和,这种算法是用一个二维数组保存,另外有种算法用一维数组也可以实现,一行一行的输出,有兴趣去写着玩下。 11 11 2 11 3 3 11 4 6 4 ...

    摄影技巧大汇总 摄影原理 相机操作 拍摄技巧 思维导图.png

    这个功能是C1与LR的最大不同之一,用LR时,不导入就无法对图像进行编辑调整,而C1用户则可在会话的方式下,直接查看硬盘的目录树,在任意位置上打开图像文件。 然后,从目录树里直接选择图像文件并打开编辑...

    正则表达式

    当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配 的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字,那么我们可以使用模式 / [a-z] + \ d+/.但是...

    一些C面试题,希望能对大家有帮助

    3.以下是求一个数的平方的程序,请找出错误: #define SQUARE(a)((a)*(a)) int a=5; int b; b=SQUARE(a++); 4.typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=...

    微软CMS/Blog系统oXite

    这是里面的一个测试页面 这就是管理的页面,不过相比看起来的确是简单的很多。 总体上那个说来,我们从整个过程中可以体会到这一点,Oxite下载很多地方还可以供大家继续发挥。相对来说,oxite确实是个轻量级的...

    改善网站、提高浏览量的方法

    寻找读者的爱好 : 寻找你文章里最受欢迎的,找出读者的爱好。 &lt;br&gt;5 . 把你的目标加入文章中 : 在写作的内容里加入心理暗示,使读者注意到你想要达到的目标( 例如想要读者登记 ),尝试去猜测用户的目标是...

Global site tag (gtag.js) - Google Analytics