java实现优先队列_Java优先队列的简单实现

importjava.util.ArrayList;class MyHeap>{private ArrayListdata;private intMaxSize;private intsize;publicMyHeap() {this.MaxSize=0;this.size=0;

}public booleanadd(Type Elem) {if(this.size>=this.MaxSize) {

MaxSize=MaxSize+((MaxSize>>1)>1?(MaxSize>>1):1);

ArrayListtemp=new ArrayList(MaxSize);for(int i=0;i

temp.add(i, data.get(i));

}

data=temp;

}

data.add(Elem);int childIndex=this.size;

Type childNode=data.get(size);while(childIndex>=0) {int parentIndex=(childIndex-1)>>1;if(parentIndex<0) {break;

}if(data.get(parentIndex).compareTo(childNode)<0) {

data.remove(childIndex);

data.add(childIndex, data.get(parentIndex));

}else{break;

}

childIndex=parentIndex;

}

data.remove(childIndex);

data.add(childIndex, childNode);this.size+=1;return true;

}public booleanshowHeap() {for(int i=0;i

System.out.print(data.get(i)+" ");

}return true;

}public booleandelete(){if(this.size>=1){this.size-=1;

data.add(1, data.get(this.size));

data.remove(0);int parentIndex=0;

Type parentNode=data.get(parentIndex);int Index=(parentIndex<<1)+1;while(Index+1

Index++;

}if(data.get(Index).compareTo(parentNode)>0) {

data.add(parentIndex, data.get(Index));

data.remove(parentIndex+1);

}else{break;

}

parentIndex=Index;

Index=(parentIndex<<1)+1;

}

data.add(parentIndex, parentNode);

data.remove(parentIndex+1);return true;

}else{return false;

}

}

}public classMain {public static voidmain(String[] args) {

MyHeapspace=new MyHeap();

space.add(12);

space.add(4);

space.add(17);

space.add(56);

space.add(20);

space.add(30);

space.add(546);

space.add(53);

space.delete();

space.showHeap();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值