- 浏览: 55034 次
- 性别:
-
文章列表
LZW字典压缩
LZW压缩算法是一种新颖的压缩方法,由Lemple-Ziv-Welch 三人共同创造,用他们的名字命名。它采用了一种先进的串表压缩,将每个第一次出现的串放在一个串表中,用一个数字来表示串,压缩文件只存贮数字,则不存贮串,从而使图象文件的压缩效率得到较大的提高。奇妙的是,不管是在压缩还是在解压缩的过程中都能正确的建立这个串表,压缩或解压缩完成后,这个串表又被丢弃。
前缀prefix:一个词组的前面一个字符,比如ab的前缀为a。
后缀suffix:一个词组的后面一个字符,比如ab的后缀为b。
字典的最大长度:我们不能无限增加码表的长度,那样增加压缩 ...
哈夫曼压缩
哈夫曼压缩是无损压缩的一种,一般用来压缩文本和程序文件。
压缩步骤:
将要压缩的文件一个一个字节地读出来,统计每个字节出现的次数(作为该叶子节点的权值)。
构建哈夫曼树,采用优先队列。
遍历哈夫曼树,得到每一个叶子节点的哈夫曼编码。(左0右1,得到的是01字符串)
将不足八位的01字符串补0使其达到八位,将每一个八位字符串转换成一个十进制的整数,代码如下;
public static int changeString(String s){
int a = ((int)s.charAt(0)-48)*128+((int)s ...
哈夫曼树的认识
先介绍一下链表。链表由一系列的结点组成,每个结点包括两个部分:数据域和指针域。数据域用来存储数据元素,指针域用来存储下一个结点的指针。这样,只要记录头结点的位置,便能找到链表中的所有数据。链表分为单向链表,双向链表和循环链表。链表能实现的基本操作:查找,删除,插入,排序,交换等。
树,其实,树和链表类似,只不过有些结点的后继大于等于一。同样,只要有根节点,便能得到整棵树上的所有数据。对于一棵结点不为零的树来说,整棵树中有且只有一个结点没有前驱,将其定义为根结点(root),其他的结点都有一个前驱,有m(m>= ...
访问限定符:用来定义类、属性、构造方法。
public:范围最大,在同一个工程中都可以用到,一般方法会定义成public
protected 受保护的 在同一个包中的类+子类
默认的(什么都不写(接口除外,接口默认public)) 在同一个包中可以使用
private(私有的) 同一个类中可以使用
子类在继承父类的时候,可以扩大可见范围,而不能减小。
this:一定指一个对象(当前调用方法的对象,谁调用指向谁)
1) 代表一个对象 (同一个类,或者调用) this.name
2)当前空间里的某一个构造方法,通过参数类型和个数去匹配this(0,0,0,"默认&quo ...
C++与java语言的简单转换。
java小程序:
/**
* 定义一个类
格式:public class 类名{},类名必须和文件名一样,区分大小写
* @author 我的文档
*
*/
public class first {
//主函数,固定写法
public static void main(String[] args){
String s="*";
int count=8;//总行数
for(int i=0;i<count;i++){
//空格
for(int k=0;k<count-(i+1);k+ ...