2014年6月19日
摘要:
1.对象初始化 在使用 new 初始化对象时,系统通常使用默认的构造函数,这个构造函数没有返回值,格式为: public class InitializeTest{ private int a; // 默认构造函数 public InitializeTest() { } // 自定义构造函数 public Init...
阅读全文
posted @ 2014-06-19 00:44
winlrou
阅读(226)
推荐(0)
2014年6月16日
摘要:
1.用引用来操作对象Java是面向对象的编程语言,一切都能看作是对象,通过引用来完成对对象的操作。// String 是对象,而s对指向这个String对象的引用String s;注意:我们是通过对象的引用来操纵对象数据的,如果对象没有关联数据(如没有被初始化),则会出现空引用,报空指针异常:jav...
阅读全文
posted @ 2014-06-16 23:19
winlrou
阅读(1448)
推荐(0)
2014年2月13日
摘要:
之前的第4部分提到了二叉搜索树的查找,插入,删除操作,那二叉树的效率如何呢? 在一个满树中,大约有一半的节点在最低层,因此,查找、插入、删除节点的操作大约有一半都需要找到最低层的节点。 按照满树的计算方法,树的操作复杂度为O(logN)。但是遍历树相对来说要慢上许多,因此,如果不涉及到遍历操作的,二叉搜索树是一种很多好的数据结构。 二叉树完整代码:包含查找,插入,删除,遍历操作。 ...
阅读全文
posted @ 2014-02-13 01:01
winlrou
阅读(846)
推荐(0)
摘要:
删除节点是二叉搜索树比较比较复杂的,一般删除节点有三种情况: 1.删除节点是叶子节点(没有字节点)。 2.删除节点只有一个子节点。 3.删除节点有两个子节点。 第一种是情况是最简单的;第二种情况也比较简单;第三种情况是最复杂的。 在真正删除节点前,还需要执行步骤:查找删除的节点 代码如下: Node current = root; // 当前节点 ...
阅读全文
posted @ 2014-02-13 00:52
winlrou
阅读(1086)
推荐(0)
2014年2月11日
摘要:
遍历树是根据一种特定的顺序访问树的每一个节点。这个过程相对比较慢,所以一般不常用。 常用的遍历方法有三种,分别是:前序遍历,中序遍历,后序遍历。其中最常用,也最简单的是中序遍历。 遍历的最简单方法是用敌对调用,这里我们将三种排序方法都使用递归调用。 1.中序遍历 二叉树会使所有的节点按关键字值升序被访问到。如果需要创建有序的数据序列,使用中序遍历将会非常简单。 方法: ...
阅读全文
posted @ 2014-02-11 20:39
winlrou
阅读(330)
推荐(0)
2014年1月27日
摘要:
插入一个节点,首先要找到插入的地方。需要从根节点开始,找到需要插入节点的父节点, 如果插入节点比父节点小,则插入到左子节点处;如果插入节点比父节点大,则插入到右子节点处。 图解:根据二叉树的节点的特点,找到插入节点的位置。 代码: /** * 插入节点,跟查找节点代码类似,只是在遇到null时,将节点插入,修改引用 * @param id...
阅读全文
posted @ 2014-01-27 23:10
winlrou
阅读(893)
推荐(0)
摘要:
有序数组的优点: 在有序数组中查找数据可以用二分查找法,用这个方法在查找时效率很高,所需时间是0(logN), 然而在插入或者删除数据时,需要平均移动N/2项数据,如果需要做很多的插入删除操作,就不应该用有序数组。 链表的优点: 链表在插入或者删除时,操作很快,只需要修改对前一个节点的引用,修改后一个节点的引用,就能完成,所需时间复杂度为O(1), 但是在查找数据是,需要链表头开始...
阅读全文
posted @ 2014-01-27 21:33
winlrou
阅读(571)
推荐(0)
2014年1月21日
摘要:
快速排序是目前最流行的算法,在大多数情况下,快速排序都是最快的,执行时间为O(N*logN)。 快速排序本质上是通过把一个数组划分为两个子数组,然后在递归调用自身对每一个字数组进行快速排序。 即数组划分为字数组A,B,在对A进行划分为A1,A2,对A1划分为A11,A12。。B也是如此执行,这就涉及到递归调用自身的操作。 1.取右值作为枢纽的情形 /** * 快速排序...
阅读全文
posted @ 2014-01-21 23:51
winlrou
阅读(294)
推荐(0)
2014年1月15日
摘要:
划分是快速排序的根本机制,主要是把数组分为两组:小于关键字的数据项在一组,大于关键字的数据项在一组。 /** * 划分数据 * * @param left 左边数据 * @param right 右边数据 * @param pivot 参照值 * @return */ public static int partiti...
阅读全文
posted @ 2014-01-15 00:07
winlrou
阅读(245)
推荐(0)
2014年1月2日
摘要:
希尔排序比简单排序快得多,大约需要O(N×(logN)2)的时间,而且容易实现。希尔排序是基于插入排序,只是希尔排序不是比较相邻的数据,而是比较一定间隔的两个数据。 我们在选择排序算法时,基本上都可以使用希尔排序,如果有特殊要求或者算法不够快,在选择其他的排序算法。我们从插入排序的缺陷入手,看看问题: 问题: 插入排序思路:在标记符左边的数据是已经排序的,而右边的数据是没有排序,它有一个临时...
阅读全文
posted @ 2014-01-02 22:42
winlrou
阅读(365)
推荐(0)