import java.util.*;public class GenericHeap <T extends Comparable <T> >{ArrayList <T> data=new ArrayList<>();HashMap<T,Integer> map=new HashMap<>();public void add(T item) {this.data.add(item);map.put(item,this.data.size()-1);//upHeapify(this.data.size()-1);}private void upHeapify(int ci) {int pi=(ci-1)/2;if(isLarger(this.data.get(ci),this.data.get(pi))>0) {swap(pi,ci);upHeapify(pi);}}public void display() {System.out.println(this.data);}public int size() {return this.data.size();}public boolean isEmpty() {return this.size()==0;}public T remove() {this.swap(0,this.size()-1);T rv=this.data.remove(this.size()-1);downHeapify(0);map.remove(rv);return rv;}private void downHeapify(int pi) {int lci=2*pi+1;int rci=2*pi+2;int mini=pi;if(lci<this.size() && isLarger(this.data.get(lci),this.data.get(mini))>0) {mini=lci;}if(rci<this.size() && isLarger(this.data.get(rci),this.data.get(mini))>0) {mini=rci;}if(mini!=pi) {this.swap(pi,mini);downHeapify(mini);}}public T get() {return this.data.get(0);}//t has higher property then return +veprivate int isLarger(T t,T o) {return t.compareTo(o);}private void swap(int i,int j) {T ith=this.data.get(i);T jth=this.data.get(j);this.data.set(i,jth);this.data.set(j,ith);map.put(ith,j);map.put(jth,i);}public void updatePriority(T item) {int index=map.get(item);//because we enter lesser value then old valeupHeapify(index);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。