📄 heap.java
字号:
package hfmCompress;
public class Heap {
private Binary[] allByteBinary = null;
private int currentSize = 0;
public Heap() {
allByteBinary = null;
currentSize = 0;
}
public Heap(Binary[] binaryArg, int sizeArg) {
allByteBinary = binaryArg;
currentSize = sizeArg;
Binary nowBinary=null;
for(int i=currentSize/2;i>0;i--){
nowBinary=allByteBinary[i-1];
int nowSmallChild=i*2;
while(nowSmallChild<=currentSize){
if(nowSmallChild<currentSize
&&allByteBinary[nowSmallChild-1].getNumberFound() > allByteBinary[nowSmallChild]
.getNumberFound()) {
nowSmallChild++;
}
if(nowBinary.getNumberFound()<=allByteBinary[nowSmallChild-1].getNumberFound()){
break;
}
allByteBinary[nowSmallChild/2-1]=allByteBinary[nowSmallChild-1];
nowSmallChild*=2;
}
allByteBinary[nowSmallChild/2-1]=nowBinary;
}
}
public Binary deleteMin() {
Binary last = allByteBinary[currentSize-1];// 最后一个元素
currentSize--;
Binary first=allByteBinary[0];
int nowBinary = 1, nowSmallChild = 2;
while (nowSmallChild <= currentSize) {
if (nowSmallChild < currentSize
&& allByteBinary[nowSmallChild-1].getNumberFound() > allByteBinary[nowSmallChild]
.getNumberFound()) {
nowSmallChild++;
}
if (last.getNumberFound() <= allByteBinary[nowSmallChild-1]
.getNumberFound()) {
break;
}
allByteBinary[nowBinary-1] = allByteBinary[nowSmallChild-1];
nowBinary = nowSmallChild;
nowSmallChild *= 2;
}
allByteBinary[nowBinary-1] = last;
return first;
}
public void add(Binary newBinaryArg) {
int i = ++currentSize;
while (i != 1
&& newBinaryArg.getNumberFound() < allByteBinary[i / 2-1]
.getNumberFound()) {
allByteBinary[i-1] = allByteBinary[i / 2-1];
i /= 2;
}
allByteBinary[i-1] = newBinaryArg;
}
public int getCurrentSize() {
return currentSize;
}
public void setCurrentSize(int currentSizeArg) {
this.currentSize = currentSizeArg;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -