java常用代码2-java哈弗曼编码的实现

java常用代码2-java哈弗曼编码的实现

ID:16511745

大小:46.50 KB

页数:4页

时间:2018-08-13

java常用代码2-java哈弗曼编码的实现_第1页
java常用代码2-java哈弗曼编码的实现_第2页
java常用代码2-java哈弗曼编码的实现_第3页
java常用代码2-java哈弗曼编码的实现_第4页
资源描述:

《java常用代码2-java哈弗曼编码的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、java哈弗曼编码的实现Javacode//哈弗曼编码的实现类publicclassHffmanCoding{privateintcharsAndWeight[][];//[][0]是字符,[][1]存放的是字符的权值(次数)privateinthfmcoding[][];//存放哈弗曼树privateinti=0;//循环变量privateStringhcs[];publicHffmanCoding(int[][]chars){//TODO构造方法charsAndWeight=newint[chars.lengt

2、h][2];charsAndWeight=chars;hfmcoding=newint[2*chars.length-1][4];//为哈弗曼树分配空间}//哈弗曼树的实现publicvoidcoding(){intn=charsAndWeight.length;if(n==0)return;intm=2*n-1;//初始化哈弗曼树for(i=0;i

3、的根节点hfmcoding[i][2]=0;//初始化哈弗曼树的左孩子hfmcoding[i][3]=0;//初始化哈弗曼树的右孩子}for(i=n;i

4、找双亲为零的weight最小的节点hfmcoding[s1[0]][1]=i;//为哈弗曼树最小值付双亲hfmcoding[s1[1]][1]=i;hfmcoding[i][2]=s1[0];//新节点的左孩子hfmcoding[i][3]=s1[1];//新节点的右孩子hfmcoding[i][0]=hfmcoding[s1[0]][0]+hfmcoding[s1[1]][0];//新节点的权值是左右孩子的权值之和}}//查找双亲为零的weight最小的节点privateint[]select(intw){//T

5、ODOAuto-generatedmethodstubints[]={-1,-1},j=0;//s1最小权值且双亲为零的节点的序号,i是循环变量intmin1=32767,min2=32767;for(j=0;j

6、min2){min2=hfmcoding[j][0];s[1]=j;}}}returns;}publicString[]CreateHCode(){//根据哈夫曼树求哈夫曼编码intn=charsAndWeight.length;inti,f,c;StringhcodeString="";hcs=newString[n];for(i=0;i

7、根结点if(hfmcoding[f][2]==c){//处理左孩子结点hcodeString+="0";}else{hcodeString+="1";}c=f;f=hfmcoding[f][1];}hcs[i]=newString(newStringBuffer(hcodeString).reverse());}returnhcs;}publicStringshow(Strings){//对字符串显示编码StringtextString="";charc[];intk=-1;c=newchar[s.length()

8、];c=s.toCharArray();//将字符串转化为字符数组for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。