哈夫曼树之压缩与解压 发表于 2017-07-30 | 分类于 算法 前言压缩与解压的另一种说法就是,压缩相当于对文件的加密过程,解压相当于对文件的解密过程,比如说,盲-z,僧-w,那么盲僧-zw,当然加密与解密各种各样,不一定非是字符型的 压缩对比如图,最左边是未压缩的原始txt文本文件,里面有38个字节, ... 阅读全文 »
哈夫曼树之构建 发表于 2017-07-30 | 分类于 算法 前言说到哈夫曼树,就不得不说它在压缩与解压方面的应用太完美了,就是把一个大的文件,通过算法压缩成一个较小的文件,从而大大节约了空间 哈夫曼树通俗的说就是给定n个权值作为n个叶子结点,构造一颗二叉树,若带权路径长度达到最小,称这样的树为哈夫曼 ... 阅读全文 »
网络编程简单总结 发表于 2017-07-29 | 分类于 java基础 前言在java网络编程中最主要的是tcp/ip协议,这个协议也是Internet最基本的协议,而其就是由网络层的ip协议和传输层的tcp协议组成,同时由于分层的思想,也就是每一层只能与它下面的层打交道,也就是说,应用层只跟传输层打交道,传输 ... 阅读全文 »
AVL树 发表于 2017-07-28 | 分类于 算法 前言AVL树,也叫平衡二叉树,是一种二叉排序树,其中每一个结点的左子树和右子树的高度差至多等于1。同时,将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF,还将距离插入结点最近的且平衡因子的绝对值大于1的结点为根的子树,称为最小不 ... 阅读全文 »
二叉排序树 发表于 2017-07-27 | 分类于 算法 前言二叉排序树,又称为二分查找树,它或者是一颗空树,或者具有如下性质1.若它的左子树不为空,则左子树上所有结点的值均小于根结点值2.若它的右子树不为空,则右子树上所有结点的值均小于根结点值3.它的左右子树也分别为二叉排序树 二叉排序树查找操 ... 阅读全文 »
死锁和生产者消费者问题 发表于 2017-07-26 | 分类于 java基础 死锁线程同步操作的是同一个线程对象,所以可能造成线程不安全,出现非数据的原子操作,所以,需要加锁,同时线程是程序的执行顺序,也就是cpu根据不同时间片选择某个时间执行某个线程,关于线程并发,在以前的总结中做过了几个简单的总结。而死锁最经典的 ... 阅读全文 »
快速排序 发表于 2017-07-25 | 分类于 算法 前言快速排序被列为20世纪十大算法之一,正如其名一样,排序的速度非常快。而它的基本思想就是通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续排序,最终达到有序的目的 快速排 ... 阅读全文 »
归并排序 发表于 2017-07-24 | 分类于 算法 前言归并的意思就是将两个或者两个以上的有序数组合成一个有序表。而归并排序就是将含有n个记录的子序列,每个子序列长度为1,然后两两归并,得到[n/2]个长度为2或者1的有序子序列,在两两归并,。。。。,如此重复,直到得到一个长度为n的有序序列 ... 阅读全文 »
java IO简单总结 发表于 2017-07-23 | 分类于 java基础 前言在涉及IO流之前需要知道文件的概念。文件是数据源(保存数据的的地方)的一种,比如word文件、txt文件。他既可以保存一张图片,也可以保存视频、声音。。。等等文件流文件在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之 ... 阅读全文 »
直接插入和希尔排序 发表于 2017-07-22 | 分类于 算法 前言直接插入在本质上改良了之前的冒泡和选择排序,而希尔排序更是超越O(n^2)的传统排序的改良算法 直接插入排序算法描述:直接插入排序就是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表首先先定义数据结构 #de ... 阅读全文 »