利用优先级队列找出十万数据中的最小十个(Find the smallest ten datas in one hundred thousand by priorityQueue)

利用优先级队列,找出十万数据中最小的十个

Find the smallest ten datas in one hundred thousand by priorityQueue

方法:优先级队列,传入的比较器 用大根堆模式来实现.
队列里面只存储十个数据,然后依次遍历十万个数据.
如果遍历的数据比队列顶部的最大值还大,则不管它.
如果遍历的数据比队列顶部的最大值还小,队列中remove掉顶部元素,再将该元素插入进去
Process:1.Creat a priorityQueue with initalCapacity ten and a Comparator that realize big root heap.
        2.Put ten datas into priorityQueue,
        3.Go through the left datas in Arraylist, if the data big than heapTop,pass it
        else remove the top data that in the priorityQueue and put currentData into priorityQueue.
        4.finally,System out the datas in the priority, that's the smallest ten datas;

 public class TestComp {
    public static void main(String[] args) {
        final int NUM = 100000; //规定十万给数据
        int i = 0; //做判断用
        Random random = new Random(  );
        ArrayList<Integer> arrayList = new ArrayList<Integer>(NUM); //存储十万个数据
        while (i < NUM){
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值