摘要: 在讨论不相交集数据结构之前,首先需要讨论等价关系。首先定义一下关系的概念:若对于每一对元素(a,b),a,bS,aRb或者为true或者为false,则称在集合S上定义关系R。如果aRb是true,那么a和b有关系。所谓的等价关系需要在关系的基础上满足下面三个性质: 1.(自反性)对于所有的aS,a 阅读全文
posted @ 2016-04-04 11:22 libs5510 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 归并排序最坏情况下时间复杂度为O(NlogN),它所使用的比较次数几乎是最优的。同时归并排序是分治策略和递归策略的一个非常好的实例。归并排序的基本操作是合并两个已经排序的表。对于一个要排序的数组,归并算法首先将数组分为两部分,然后分别对这两部分递归调用自己,这个递归算法的递归终止条件是数组长度为一, 阅读全文
posted @ 2016-03-23 22:19 libs5510 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 排序大致分为两类,内部排序和外排序。内部排序指要排序的数据量很小,可以将全部数据读入内存,然后在其中进行排序。外部排序指数据量很大,数据无法全部读入内存,必须在磁盘或者磁带上完成的排序。首先来研究内排序,有几种简单的排序算法如插入排序,冒泡排序,选择排序时间复杂度为O(N*N),另外有一种希尔排序( 阅读全文
posted @ 2016-03-16 19:14 libs5510 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 在java中,修饰符分为访问权限修饰符和非访问权限修饰符。可以被修饰符修饰的java语言元素有类,变量,方法和接口。下面分别描述在这四个元素上使用修饰符的作用。 类 java中声明类的格式为: 访问修饰符 修饰符 class 类名 extends 父类名称 implements 接口名称{} 其中访 阅读全文
posted @ 2016-03-10 20:00 libs5510 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 利用分离连接法解决冲突需要用到链表数据结构,同一个链表中保存的数据是关键字经过hash后映射到相同hash表位置的数据,当在hash表中查找数据时,首先对关键字进行hash找到链表在hash表中的位置,然后在链表中查找数据。插入删除操作遵循相同的步骤,首先找到要操作的数据,然后在链表上进行处理。这里 阅读全文
posted @ 2016-03-06 21:41 libs5510 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 二叉树提供了对一组数据进行各种操作的强大功能,特别是在处理有序数据时二叉查找树非常方便。例如FindMax和FindMin操作,在表数据结构中这两个操作时间复杂度为O(N),但在二叉查找树中这两个操作只需要O(logN)的时间复杂度。但在很多情况下,数据的顺序并不是应用所关心的问题。这一类应用只需要 阅读全文
posted @ 2016-03-06 16:16 libs5510 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 文本输入输出 进行文本输出的类是PrintWriter,这个类提供格式化输出字符的功能,它是Writer的子类。类似于System.out的使用,PrintWriter的实例提供了很多类似的输出功能。System.out是PrintStream的实例,PrintStream是OutputStream 阅读全文
posted @ 2016-03-04 21:55 libs5510 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 除了二叉查找树之外,还有许多其他类型的树,这些树因为其独特的性质,在很多特定的领域获得了广泛的应用。这里简单介绍两种特别的树,伸展树和B树。 伸展树 伸展树是二叉查找树的扩展,是一种特殊的二叉查找树。但不同与普通的二叉平衡查找树如AVL树,伸展树没有严格的平衡条件,但是伸展树仍然可以保证其基本操作的 阅读全文
posted @ 2016-03-02 20:05 libs5510 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树在最坏情况下高度可能为N-1,即插入元素时后插入的元素总比以前插入的元素大或者小。为了解决这种不平衡的情况,引入了平衡条件来限制树中节点的深度不能过深,其中最老的一种平衡树称为AVL树。这种树限制树中每个节点的左右子树的高度相差不能超过一。(另一种更严格的树限制节点的左右子树高度必须相等, 阅读全文
posted @ 2016-03-01 11:27 libs5510 阅读(299) 评论(0) 推荐(0) 编辑
摘要: Java输入输出大致可以分为两类,流式操作与非流式操作,流式操作主要关注与文件内容的读写,非流式操作主要用于文件在磁盘上的管理。下面首先学习流式数据操作。 流 与c++类似,java中也提供了流的概念来处理输入输出(I/O)。Java中,可以从其中读入一个字节序列的对象称为输入流,可以向其中写入一个 阅读全文
posted @ 2016-02-29 21:48 libs5510 阅读(234) 评论(0) 推荐(0) 编辑