⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heap.java

📁 哈夫曼编码 文件压缩 使用java语言对文件进行编码压缩
💻 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 + -