亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hafuman.java

?? 哈夫曼編碼(哈夫曼編碼(Huffman Coding)是一種編碼方式,哈夫曼編碼是可變字長編碼(VLC)的一種。)
?? JAVA
字號:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class Hafuman extends JFrame
{
	int length;
	byte ch[] = new byte[8000];
	byte countPart[] = new byte[8000];
	int alpha[] = new int[25];
	MyTree tree[] = new MyTree[31];
	char zimu[] = new char[26];
	StringBuffer buffer = new StringBuffer();
	String charToString[] = new String[26];
	Hashtable connection = new Hashtable();
	
	public Hafuman()
	{
		super("Hafuman");
		outLook();
		events();
	}
	private void outLook()
	{
		Container contain = getContentPane();
		super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		super.setBounds(50,50,200,200);
		super.setVisible(true);
	}
	private void events()
	{
		for(int i=0;i<tree.length;i++)
		{
			tree[i] = new MyTree();
		}
		for(int i=0;i<countPart.length;i++)
		{
			countPart[i] = -1;
		}
		for(int i=0;i<charToString.length;i++)
		{
			charToString[i] = new String("-1");
		}
		String al = "abcdefghijklmnopqrstuvwxyz";
		zimu = al.toCharArray();
	}
	private void read()
	{
		try
		{
			FileInputStream input = new FileInputStream("哈夫曼編碼實驗數據.dat");
			length=input.read(ch);
			input.close();
			for(int j=0;j<length;j++)
			{
				alpha[ch[j]-97]+=1;
			}
			int k=0;
			for(int i=0;i<alpha.length;i++)
			{			
				if(alpha[i]!=0)
				{
					tree[k] = new MyTree(alpha[i],zimu[i]);
					k++;
				}	
			}
			int change = 0;
			for(int i=16;i<31;i++)
			{
				sort(tree,i-16+change,i);
				for(int j = i-16+change;j<i;j++)
				{
					System.out.println(j + "  :  "  + tree[j].nodeChar + "  :  " + tree[j].weight);
				}
				
				tree[i].weight = tree[i-16+change].weight + tree[i-15+change].weight;
				tree[i-16+change].zeroOrOne = 0;
				tree[i-15+change].zeroOrOne = 1;
				tree[i-16+change].parent = i;
				tree[i-15+change].parent = i;
				tree[i].lChild = i-16+change;
				tree[i].rChild = i-15+change;
				change++;
			}
			for(int i=0;i<tree.length;i++)
			{
				System.out.println(tree[i].nodeChar + "   :   " + tree[i].weight);
			}
			
			for(int i=0;i<tree.length;i++)
			{
				MyTree tempTree = tree[i];
				
				if(tempTree.nodeChar != '0')
				{
					StringBuffer temp = new StringBuffer("") ;
					temp.append(String.valueOf(tempTree.zeroOrOne));
					while(tempTree.parent!=0)
					{
						tempTree = tree[tempTree.parent];
						temp.append(String.valueOf(tempTree.zeroOrOne));
					}
					temp.delete(temp.length()-2,temp.length());
					temp.reverse();
					tree[i].result = temp.toString();
					System.out.println("result : " + i + " " + tree[i].nodeChar + " : " + tree[i].weight + ": " + tree[i].result);
					
				}
			}	
		}
		catch(Exception e)
		{}
		dealCharToString();
	/*	for(int i=0;i<tree.length;i++)
			System.out.println("\n" + tree[i].nodeChar + ","+i+"'s parent : " + tree[i].parent+"\n");
			*/
	}
	public void yaSuo()
	{
		for(int i=0;i<ch.length;i++)
		{
			if(ch[i]!=0)
			{
				buffer.append(tree[treeNumber(zimu[ch[i]-97])].result);
			}						
		}
		System.out.println("\n\n\nsave should be : "+buffer.length()%8);
		buffer.insert(0,toBinary((byte)(buffer.length()%8),true));	
		String tempString ="";//= buffer.substring(0,8);
		//tempChar = buffer.toString().toCharArray();
	//	System.out.println("\n\n"+tempString);
	//System.out.println("\n"+buffer.toString()+"\n");
		int count = 0;
		while((count*8 +8)<buffer.length())
		{
			tempString = buffer.substring(count*8,count*8 + 8);
			countPart[count] =toByte(tempString);
			count++;	
		}
		if(count*8<buffer.length())
		{
			tempString = buffer.substring(8*count,buffer.length());
			count++;
			countPart[count] = toByte(tempString);
		}
		try
		{
			FileOutputStream fileOut = new FileOutputStream("壓縮結果.dat");
			fileOut.write(countPart,0,count);
			fileOut.flush();
			fileOut.close();
		}
		catch(Exception ex)
		{
		}
		JOptionPane.showMessageDialog(null,"壓縮成功");
	}
	public void jieYa()
	{
		int length2=0;
		int save = 0;
		StringBuffer tempBuffer = new StringBuffer();
		StringBuffer tempBuffer2 = new StringBuffer();
		try
		{
			FileInputStream fileIn = new FileInputStream("壓縮結果.dat");
			save = fileIn.read();
			System.out.println("\n\n\n\nsave length:"+save);
			length2 = fileIn.read(countPart);
		}
		catch(Exception ex)
		{
		}
		
		for(int i=0;i<length2-1;i++)
		{
			tempBuffer.append(toBinary(countPart[i],true));
		}
		tempBuffer.append(toBinary(countPart[length2-1],false));
		char originalChar=' ';
		
		while(tempBuffer.length()!=0)
		{
			
			for(int i=1;i<=10;i++)
			{
			
				if(i<=tempBuffer.length()&&connection.get(tempBuffer.substring(0,i))!=null)
				{
					tempBuffer2.append((Character)connection.get(tempBuffer.substring(0,i)));
					if(i<tempBuffer.length())
						tempBuffer.delete(0,i);
					else 
						tempBuffer.delete(0,tempBuffer.length());
				}
				if(i>tempBuffer.length())
				{
					if((Character)connection.get(tempBuffer.substring(0,tempBuffer.length()))!=null)
						tempBuffer2.append((Character)connection.get(tempBuffer.substring(0,i)));
					tempBuffer.delete(0,tempBuffer.length());
				}		
			}
		}
		byte tempByte[] = new byte[tempBuffer2.length()];
		char tempChar2[] = new char[tempBuffer2.length()];
		tempBuffer2.getChars(0,tempBuffer2.length(),tempChar2,0);
		for(int i=0;i<tempByte.length;i++)
		{
			tempByte[i] = (byte)tempChar2[i];
		}
		try
		{
			FileOutputStream fileOutput = new FileOutputStream("解壓結果.dat");
			fileOutput.write(tempByte);
			fileOutput.flush();
			fileOutput.close();
		}
		catch(Exception ex)
		{
		}
		System.out.println("result:  "+tempBuffer2.toString()+"\n");
		System.out.println("\n\n"+tempBuffer2.length());
	}
	private byte toByte(String str)
	{
		byte result = 0;
		char tempCh[] = str.toCharArray();
		for(int i=0;i<tempCh.length;i++)
		{
			result += Integer.parseInt(tempCh[i]+"")<<(7-i);
		}
		return result;
	}
	private void dealCharToString()
	{
		for(int i=0;i<tree.length;i++)
		{
			if(tree[i].nodeChar!='0')
			{
				connection.put(tree[i].result,tree[i].nodeChar);
			}
		}
	}
	
	public String toBinary(byte b,boolean isNotLast)
	{
		StringBuffer tempBuffer = new StringBuffer();
		int tempInt;
		if(b<0)
			tempInt = b + 256;
		else
			tempInt = b;
	
		while(tempInt>0)
		{
			tempBuffer.append(tempInt%2);
			tempInt = tempInt/2;
		}
		while(isNotLast&&tempBuffer.length()<8)
		{
			tempBuffer.append(0);
		}
		tempBuffer.reverse();
		return tempBuffer.toString();
	}
	public int treeNumber(char ch)
	{
		for(int i=0;i<tree.length;i++)
		{
			if(tree[i].nodeChar == ch)
				return i;
		}
		return -1;
	}
	
	public void sort(MyTree []tree,int a,int b)
	{
		MyTree min = new MyTree();
		for(int i=a;i<b;i++)
		{
			min = tree[i];
			for(int j = i+1;j<b;j++)
			{
				if(min.weight>tree[j].weight)
				{
					int temp1,temp2;
					if(min.lChild!=-1&&min.rChild!=-1&&tree[j].lChild!=-1&&tree[j].rChild!=-1)
					{
						temp1 = tree[min.lChild].parent;
						temp2 = tree[min.rChild].parent;
						tree[min.lChild].parent = j;
						tree[min.rChild].parent = j;
						tree[tree[j].lChild].parent = temp1;
						tree[tree[j].rChild].parent = temp2;
					}
					else if(min.lChild!=-1&&min.rChild!=-1)
					{
						tree[min.lChild].parent = j;
						tree[min.rChild].parent = j;
					}
					else if(tree[j].lChild!=-1&&tree[j].lChild!=-1)
					{
						tree[tree[j].lChild].parent = i;
						tree[tree[j].rChild].parent = i;
					}
					min.swap(tree[j]);
					
				}
			}
		}
	}
	public static void main(String args[])
	{
		Hafuman h = new Hafuman();
		h.read();
		h.yaSuo();
		h.jieYa();
		System.out.println("bijiao"+h.length+" : " );
		/*byte b = -1;
		System.out.println(b.intValue());*/
		/*if(h.ch[0]!='0')
		{
			System.out.println("\n\n"+h.ch[0]);
		}*/
		//System.out.println("\n\n::"+h.countPart[0]);
	
	}
	class MyTree
	{
		int parent;
		int rChild;
		int lChild;
		int weight;
		char nodeChar;
		int zeroOrOne;
		String result;
		
		public MyTree()
		{
			parent = 0;
			lChild = -1;
			rChild = -1;
			weight = -1;
			zeroOrOne = -1;
			nodeChar = '0';
			result = "-1";
		}
		public MyTree(int w,char node)
		{
			parent = 0;
			lChild = -1;
			rChild = -1;
			weight = w;
			zeroOrOne = -1;
			nodeChar = (char)node;
			result = "-1";
		}
		public MyTree(int p,int l,int r,int w,int z,char node)
		{
			parent = p;
			lChild = l;
			rChild = r;
			weight = w;
			zeroOrOne = z;
			nodeChar = (char)node;
			result = "-1";
		}
		public boolean swap(MyTree tree)
		{
			int p,l,r,w,z;
			char node;
			p = this.parent;
			l = this.lChild;
			r = this.rChild;
			w = this.weight;
			z = this.zeroOrOne;
			node = this.nodeChar;
			this.lChild = tree.lChild;
			this.rChild = tree.rChild;
			this.nodeChar = tree.nodeChar;
			this.parent = tree.parent;
			this.weight = tree.weight;
			this.zeroOrOne = tree.zeroOrOne;
			tree.lChild = l;
			tree.rChild = r;
			tree.nodeChar = node;
			tree.parent = p;
			tree.weight = w;
			tree.zeroOrOne = z;
			return true;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
宅男在线国产精品| 欧美丝袜丝交足nylons| 欧美性色综合网| 欧美精品vⅰdeose4hd| 成人黄色片在线观看| 亚洲自拍与偷拍| 日韩欧美国产不卡| 欧美日韩亚洲综合在线 | 中文一区一区三区高中清不卡| 久久国产精品色| 亚洲高清免费视频| 伊人婷婷欧美激情| 亚洲色图在线播放| 一区二区三区 在线观看视频| 国产精品免费av| 欧美国产激情一区二区三区蜜月| 久久久久久免费| 日韩精品在线一区| 亚洲国产综合人成综合网站| 国产激情视频一区二区在线观看| 蜜桃久久av一区| 日韩精品福利网| 韩国精品主播一区二区在线观看| 午夜精品免费在线观看| 丝袜国产日韩另类美女| 色婷婷狠狠综合| 666欧美在线视频| 视频一区二区三区入口| 精品视频在线视频| 亚洲一区二区免费视频| 欧美日韩视频一区二区| 一卡二卡欧美日韩| 欧美日韩免费不卡视频一区二区三区| 欧美日本一区二区| 国产精品影视在线观看| 欧美色精品在线视频| 偷窥少妇高潮呻吟av久久免费| 精品1区2区3区| 久久国产夜色精品鲁鲁99| 日韩欧美国产麻豆| 成人精品高清在线| 午夜精品久久久久久久99樱桃 | 色偷偷88欧美精品久久久| 久久精品人人做| 视频一区二区欧美| 亚洲国产成人在线| 欧美日本一道本| 成人aaaa免费全部观看| 亚洲超碰精品一区二区| www.日韩在线| 久久精品视频一区| 欧美午夜免费电影| 99国产精品一区| 日韩一区在线播放| 在线一区二区三区四区五区| 亚洲欧美怡红院| 精品国产乱码91久久久久久网站| 亚洲美女偷拍久久| 欧美日韩夫妻久久| 91年精品国产| 一区二区三区日韩欧美精品| 久久亚洲春色中文字幕久久久| 久久av中文字幕片| 麻豆精品国产91久久久久久| 亚洲欧美色图小说| 精品久久久久久久人人人人传媒| 精品一区二区免费在线观看| 久久久久久久久久久黄色| 日韩精品中午字幕| 精品久久人人做人人爱| 精品少妇一区二区三区免费观看| 日韩一区二区在线播放| 不卡视频免费播放| 91年精品国产| 91精品在线免费| 26uuuu精品一区二区| 精品国产99国产精品| 国产欧美视频在线观看| 56国语精品自产拍在线观看| 欧美一级xxx| 亚洲精品菠萝久久久久久久| 亚洲成年人影院| 国产丶欧美丶日本不卡视频| 99re热这里只有精品免费视频| 精品视频一区二区三区免费| 久久久久久久综合狠狠综合| 亚洲午夜激情网页| 麻豆成人久久精品二区三区小说| 成人永久免费视频| av影院午夜一区| 精品女同一区二区| 丝袜诱惑制服诱惑色一区在线观看| 久久99国产精品尤物| 色爱区综合激月婷婷| 久久久久久久久久久久久久久99| 亚洲观看高清完整版在线观看| 国产精品一二三区在线| 欧美一区二区三区日韩| 日韩欧美高清dvd碟片| 亚洲资源中文字幕| 91蝌蚪国产九色| 亚洲视频网在线直播| av亚洲精华国产精华| 久久久久国色av免费看影院| 奇米影视一区二区三区| 美女视频黄免费的久久| 91精品国产色综合久久| 青娱乐精品视频在线| 欧美一区二区国产| 捆绑调教一区二区三区| 精品国产伦理网| 成人av中文字幕| 一区二区三区在线观看网站| 色94色欧美sute亚洲线路一久 | 久久网这里都是精品| 国产成人综合在线观看| 国产精品乱人伦| 欧美日韩亚洲综合在线| 精品一区免费av| 亚洲免费观看视频| 日韩欧美一二三| 欧美日韩国产美| 黑人精品欧美一区二区蜜桃| 国产精品二三区| 国模套图日韩精品一区二区| 国产色产综合产在线视频| 色婷婷av一区二区三区大白胸| 日韩av电影天堂| 91精品在线免费| 色婷婷综合视频在线观看| 久久国产精品99久久人人澡| 一区二区三区日韩在线观看| 欧美成人乱码一区二区三区| 在线观看亚洲一区| 一区二区在线观看视频| 国产午夜精品美女毛片视频| 51精品国自产在线| 欧美中文字幕久久| 色婷婷综合中文久久一本| 成人激情小说乱人伦| 国产真实乱子伦精品视频| 日韩电影一区二区三区| 亚洲国产毛片aaaaa无费看| 亚洲男人的天堂av| 性欧美疯狂xxxxbbbb| 婷婷开心激情综合| 日日夜夜免费精品视频| 日本一不卡视频| 激情综合一区二区三区| 国产成人在线视频网站| jlzzjlzz国产精品久久| 91麻豆免费看| 91精选在线观看| 国产欧美精品国产国产专区| 中文字幕制服丝袜一区二区三区| 国产精品黄色在线观看| 亚洲高清免费观看| 国产米奇在线777精品观看| 亚洲专区一二三| 极品少妇一区二区三区精品视频 | 综合久久综合久久| 午夜激情久久久| 99精品视频一区二区三区| 欧美亚洲禁片免费| 久久久国际精品| 天天射综合影视| 在线影视一区二区三区| 久久久久久麻豆| 美女mm1313爽爽久久久蜜臀| 91麻豆.com| 中文字幕在线观看一区| 精品亚洲porn| 欧美v亚洲v综合ⅴ国产v| 综合在线观看色| 成人中文字幕在线| 欧美一区二区观看视频| 亚洲一区免费在线观看| 91黄色免费看| 亚洲精品v日韩精品| 99久久久精品| 亚洲免费在线看| 在线欧美小视频| 亚洲成人高清在线| 欧美久久久久久久久| 亚洲精品免费一二三区| 色综合天天综合狠狠| 欧美日韩在线播| 天堂蜜桃一区二区三区| 日韩三级.com| 国产不卡视频一区二区三区| 欧美影视一区二区三区| 亚洲chinese男男1069| 欧美一区二区三区四区五区 | 亚洲美女少妇撒尿| 欧美日韩亚州综合| 美女看a上一区| 国产无人区一区二区三区| 成人激情综合网站| 视频一区二区中文字幕| 国产欧美日韩在线|