import java.util.HashMap;
import java.util.Vector;
public class Heap {
private Vector<Object> heap;
private HashMap<Object,Object> key;
public Heap(Vector<Object> heap,Vector<Object> key){
this.heap=new Vector<Object>(heap);
this.key=new HashMap<Object,Object>();
for(Integer i=0;i<heap.size();i++){
this.key.put(heap.get(i), key.get(i));
}
this.creatHeap();
}
public Boolean heapUp(Integer location){
Integer parent;
if(location>=1){
parent=(location-1)/2;
if((Integer)key.get(heap.get(location))<(Integer)key.get(heap.get(parent))){
Integer temp=(Integer)heap.get(location);
heap.set(location, heap.get(parent));
heap.set(parent, temp);
this.heapUp(parent);
}
else{
return true;
}
}
return true;
}
public Boolean heapDown(Integer location){
Integer left,right,length,child=0;
length=heap.size();
if(2*(location+1)>length){
return true;
}
else if(2*(location+1)<length){
left=2*(location+1)-1;
right=left+1;
if(Math.min((Integer)key.get(heap.get(left)),(Integer)key.get(heap.get(right)))==(Integer)key.get(heap.get(left))){
child=left;
}else{
child=right;
}
}
else if(2*(location+1)==length){
child=length-1;
}
if((Integer)key.get(heap.get(child))<(Integer)key.get(heap.get(location))){
Integer temp1=(Integer)heap.get(location);
heap.set(location, heap.get(child));
heap.set(child, temp1);
this.heapDown(child);
}
return true;
}
public void creatHeap(){
for(Integer i=0;i<heap.size();i++){
this.heapUp(i);
}
}
public String toString(){
return "所有元素:"+heap;
}
public void changeKey(Object v,Object k){
//把节点V的key改为k
Integer mark=0;
if((Integer)this.key.get(v)>(Integer)k){
mark=1;
}
this.key.put(v, k);
if(mark==0){
this.heapDown(this.heap.indexOf(v));
}
else{
this.heapUp(this.heap.indexOf(v));
}
}
public Object extracctMin(){
Object temp=heap.get(0);
heap.set(0, heap.get(heap.size()-1));
heap.remove(heap.size()-1);
key.remove(temp);
this.heapDown(0);
return temp;
}
}
优先队列算法实现(Java)
5星 · 超过95%的资源 需积分: 4 171 浏览量
2009-06-01
12:49:59
上传
评论 1
收藏 4KB RAR 举报
tingyu0624
- 粉丝: 0
- 资源: 2
最新资源
- cutcamera1699880194026.png
- 1999-2022年各省城镇居民人均消费支出数据(无缺失).xls
- 药店销售管理系统ssm(药品销售)【说明】资源来源网络以及部分开源社区、仅供参考与学习、项目不可商用、一切后果由使用者承担、若
- DHT11 (2)(2).apk
- 基于JSP毕业设计-学生管理系统-毕业设计.zip
- HTML+CSS+JS精品网页模板H111.rar
- 人工智能:python+OpenCV实现视频跟踪流水线缺陷检测识别
- 2005-2022年各省居民人均消费支出数据(无缺失).xlsx
- HTML+CSS+JS精品网页模板H110.rar
- 2024第四届声纹识别产业发展与创新研讨会嘉宾PPT+鲁棒声纹识别的对抗防御
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页