资源简介
java算法分析与设计之哈夫曼编码源代码
算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的可怜,尤其是java代码简直如大海捞针。因此,做完这次课程设计,我决定把这些资源传到广大学生钟爱的CSDN上供大家分享学习,希望能真正帮到大家!
代码片段和文件信息
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Huffman {
private List nums;
private List numsMo;
private List trees;
private String temp;
public Huffman() {
nums = new ArrayList();
numsMo = new ArrayList();
trees = new ArrayList();
temp = ““;
}
public void addNums() {// 给定一组数
System.out.println(“请输入一组数,中间用空格分隔:“);
Scanner sca = new Scanner(System.in);
String str = sca.nextLine();
String[] strs = str.split(“ “);
for (int i = 0; i < strs.length; i++) {
nums.add(Double.parseDouble(strs[i]));
numsMo.add(Double.parseDouble(strs[i]));
}
}
public void compareNum(List nums List trees) {// 递归算法
double[] min = new double[2];
if (nums.size() > 1) {
min = minTwo(nums);
Tree t = new Tree(min[0] min[1] min[0] + min[1]);
nums.remove(Double.valueOf(min[0]));
nums.remove(Double.valueOf(min[1]));
nums.add(min[0] + min[1]);
trees.add(t);
compareNum(nums trees);
}
}
public void print(double num) {// 递归打印编码
for (Tree t : trees) {
if (num == t.getRchild()) {
temp = 1 + temp;
print(t.getParents());
break;
} else if (num == t.getLchild()) {
temp = 0 + temp;
print(t.getParents());
break;
}
}
}
public void write(double d) {
temp = ““;
System.out.print(d + “ : “);
print(d);
System.out.print(temp);
System.out.println(“ 码长:“ + temp.length());
}
public double[] minTwo(List nums) {// 在一组数中选则最小的两个,按递增排序返回
Double temp = 0.0;
for (int j = 0; j < 2; j++) {
for (int i = 1; i < nums.size(); i++) {
if (nums.get(i - 1) < nums.get(i)) {
temp = nums.get(i);
nums.set(i nums.get(i - 1));
nums.set(i - 1 temp);
}
}
}
double[] n = { nums.get(nums.size() - 1) nums.get(nums.size() - 2) };
return n;
}
public void start() {
addNums();
compareNum(nums trees);
while (numsMo.size() > 1) {
double[] mins = minTwo(numsMo);
if (mins[0] != mins[1]) {
numsMo.remove(Double.valueOf(mins[0]));
write(mins[0]);
}
}
if (!numsMo.isEmpty()) {
write(numsMo.get(0));
}
}
public static void main(String[] args) {
new Huffman().start();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-11-23 17:01 7-哈夫曼编码\src\
文件 2371 2012-10-11 16:57 7-哈夫曼编码\src\Huffman.java
文件 568 2012-10-11 16:56 7-哈夫曼编码\src\Tree.java
目录 0 2012-11-23 17:01 7-哈夫曼编码\
- 上一篇:java+sql2005实现宿舍管理系统
- 下一篇:PL0词法分析器java实现
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
- Java写的一个简单的字体更改程序
- java8学习教程之lambda表达式的使用方法
评论
共有 条评论