代码改变世界

二叉排序树(二叉搜索树)

2012-10-09 11:17 by jiutianhe, 460 阅读, 0 推荐, 收藏, 编辑
摘要:二叉排序树二叉排序树又称为二叉查找树,它是一种特殊结构的二叉树,其定义为:二叉树排序树或者是一棵空树,或者是具有如下性质的二叉树:(1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值;(2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值;(3)它的左右子树也分别为二叉排序树。这是一个递归定义。由定义可以得出二叉排序树的一个重要性质:中序遍历一个二叉排序树时可以得到一个递增有序序列。图1所示的二叉树就是一棵二叉排序树,若中序遍历图8.3(a)的二叉排序树,则可得到一个递增有序序列为:1,2,3,4,5,6,7,8,9。 (a) 二叉排序树示例1(b) 二叉排序树示例2(根据字 阅读全文

哈夫曼树

2012-10-09 10:55 by jiutianhe, 224 阅读, 0 推荐, 收藏, 编辑
摘要:哈夫曼树又称最优二叉树哈夫曼树的构造哈夫曼树的构造 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和; (3)从森林中删除选取的两棵树,并将新树加入森林; (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。编程实现:package binarytree;import java.util.A... 阅读全文

二叉树的遍历(Java实现)

2012-10-09 10:42 by jiutianhe, 318 阅读, 0 推荐, 收藏, 编辑
摘要:主要是二叉树的遍历,包括递归遍历和非递归遍历package util; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.Queue; public class BinaryNode<T> { /** * 泛型BinaryNode类 */ public T item; public BinaryNode<T> left,right;//左右子树 public BinaryNode(T item) { this.item... 阅读全文

Java中四舍五入

2012-10-07 16:30 by jiutianhe, 9824 阅读, 2 推荐, 收藏, 编辑
摘要:Java有四舍五入函数--Math.round,通过一个例子看看他的用法:package math;public class MathRoundTest { /** * Math类中提供了三个与取整有关的方法:ceil,floor,round, * 这些方法的作用于它们的英文名称的含义相对应,例如:ceil的英文意义是天花板,该方法就表示向上取整, * Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;floor的英文是地板, * 该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12... 阅读全文

4.java内存机制--堆与栈

2012-10-07 16:23 by jiutianhe, 247 阅读, 0 推荐, 收藏, 编辑
摘要:问题的引入:问题一:String str1 = "abc";String str2 = "abc"; System.out.println(str1==str2); //true问题二:String str1 =new String ("abc");String str2 =new String ("abc"); System.out.println(str1==str2); // false问题三:String s1 = "ja";String s2 = "va";Stri 阅读全文

3.Java内存管理--内存分配

2012-10-07 16:14 by jiutianhe, 290 阅读, 0 推荐, 收藏, 编辑
摘要:一、Java内存分配1、 Java有几种存储区域?* 寄存器-- 在CPU内部,开发人员不能通过代码来控制寄存器的分配,由编译器来管理* 栈-- 在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域,即栈顶的地址和栈的最大容量是系统预先规定好的。-- 优点:由系统自动分配,速度较快。-- 缺点:不够灵活,但程序员是无法控制的。-- 存放基本数据类型、开发过程中就创建的对象(而不是运行过程中)* 堆-- 是向高地址扩展的数据结构,是不连续的内存区域-- 在堆中,没有堆栈指针,为此也就无法直接从处理器那边获得支持-- 堆的好处是有很大的灵活性。如Java编译器不需要知道从堆里需 阅读全文

2.Java内存回收机制

2012-10-07 15:24 by jiutianhe, 1343 阅读, 0 推荐, 收藏, 编辑
摘要:一、Java对象在内存引用状态内存泄露:程序运行过程中,会不断分配内存空间,那些不再使用的内存空间应该即时回收它们,从而保证系统可以再次使用这些内存,如果存在无用的内存没有被回收回来,这就是内存泄漏.(1)强引用 这是java程序中最常见的引用方式,程序创建一个对象,并把这个对象赋给一个引用变量,这个引用变量就是强引用.java程序可通过强引用来访问实际的对象。当一个对象被一个或一个以上的强引用变量引用时,它处于可达状态,它不可能被系统垃圾回收机制回收。 强引用是Java编程中广泛使用的引用类型,被强引用所引用的Java对象绝不会被垃圾回收机制回收,即使系统内存紧张;即使有些Java对象以.. 阅读全文

支持向量机通俗导论(理解SVM的三层境界)

2012-10-04 18:53 by jiutianhe, 124 阅读, 0 推荐, 收藏, 编辑
摘要:http://blog.csdn.net/v_july_v/article/details/7624837http://www.cnblogs.com/vivounicorn/archive/2011/06/01/2067496.html 阅读全文

Vim使用总结

2012-10-04 18:42 by jiutianhe, 131 阅读, 0 推荐, 收藏, 编辑
摘要:1.移动光标在当前行里面有效的移动光标,注意这些字母都可以配合删除、移动等操作。fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)Fx:和 fx 类似,不过是往回找。:jumps 看你过去移动光标的历史% 跳转到配对的括号去[[ 跳转到代码块的开头去(但要求代码块中'{'必须单独占一行)w:光标往前移动一个词。e:跳到一个词的尾部,然后从尾部跳到下一个词b:光标往后移动一个词。0:移动光标到当前行首。^:移动光标到当前行的第一个字母位置 阅读全文

荷兰国旗问题--快速排序的变种

2012-10-04 17:15 by jiutianhe, 573 阅读, 0 推荐, 收藏, 编辑
摘要:1.问题描述:我们将乱序的红白蓝三色小球排列成有序的红白蓝三色的同颜色在一起的小球组。这个问题之所以叫荷兰国旗,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。2.问题分析:这个问题我们可以将这个问题视为一个数组排序问题,这个数组分为前部,中部和后部三个部分,每一个元素(红白蓝分别对应0、1、2)必属于其中之一。由于红、白、蓝三色小球数量并不一定相同,所以这个三个区域不一定是等分的,也就是说如果我们将整个区域放在[0,1]的区域里,由于三色小球之间数量的比不同(此处假设1:2:2),可能前部为[0,0.2),中部为[0.2,0.6),后部为[0.6,1]。我们的思路如下 阅读全文