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();
}
}