Java实现堆及其功能(1),37岁程序员被裁【附源码】_程序员阿水

        child=parents;          parents=(child-1)/2;          }else {          break;      }  }  } 
 [](  )三、出堆(出队列)  ============================================================================  返回优先级最高的对象,即头节点,将头结点和最后一个元素交换,剪掉最后一个元素,调用调整方法重新键堆  代码如下(示例): 

public void pop(){

   /* if(isEmpty()){          return;      }*/      int tmp=this.elem[0];      this.elem[0]=this.elem[this.usedSize-1];      this.elem[this.usedSize-1]=tmp;      this.usedSize--;      adjustDown(0,this.usedSize);  } 
 [](  )四、优先级队列  ========================================================================== 

PriorityQueue<Integer>priorityQueue=new PriorityQueue<>();//优先级队列 默认是小堆

    //改为大堆       PriorityQueue<Integer>priorityQueue1=new PriorityQueue<>(new Comparator<Integer>() {//改为大堆          @Override          public int compare(Integer o1, Integer o2) {              return o2-o1;          }      }); 
 [](  )五、TopK问题  ===========================================================================  即找出数组中前K个最值问题,时间复杂度为nlogK,    如果找的是前K个最大值,    1.建立大小为K的小堆    2.遍历数组将K个元素放入堆中    3.从K+1位置开始和堆顶元素进行比较    4.如果比堆顶元素大的话,就出小的元素,之后大的入堆    5.最终输出小堆就前K个最大元素    找最小值就是建大堆。 

public static void TopK(int[]array,int k){

PriorityQueue<Integer> minHeap=new PriorityQueue<>(k);

for (int i=0;i<array.length;i++){      if(k>0){          minHeap.offer(array[i]);          k--;      }else {          Integer val=minHeap.peek();          if(array[i]>val){//如果K+1位置的值大于堆顶的元素 就出              minHeap.poll();              minHeap.offer(array[i]);          }      }  }  System.out.println(minHeap);

}

 [](  )六、堆排序  ========================================================================  从小到大排序,建立一个大堆 每次将堆顶元素和最后位置元素调换,end位置减1,将所有位置都调整完成后,就是有序的。 

//堆排序 从小到大排序 应该是建大堆(能知道最上面是最大的)

public static void heapSort(int []array){      createHeap(array);      int end=array.length-1;     // while(){//循环 建立大堆 每次都是头最大 交换 尾巴节点      while (end>0){          int tmp=array[0];          array[0]=array[end];          array[end]=tmp;          adjust(array,0,end);          end--;      }      }

最后

2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。

Java实现堆及其功能(1),37岁程序员被裁【附源码】_程序员阿水

更多JVM面试整理:

Java实现堆及其功能(1),37岁程序员被裁【附源码】_程序员阿水

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

本站由小牛团队全力维护,小牛十年了,大家已经步入中年 。本站源码全部经过团队成员测试并调试,价格可能比其它网站略贵几元钱,不解释!
小牛资源 » Java实现堆及其功能(1),37岁程序员被裁【附源码】_程序员阿水

发表评论

全站资源亲测可用,价格略高几元,不解释

立即查看 了解详情