摘要: 差不多把数据结构里面的主要算法都写了,写一个概要吧。1,数组有序数组与无序数组的删除,插入,查找操作,时间复杂度,很简单:2,简单排序时间复杂度在O(n^2)级别的,虽然都是平方级别的,但也有快慢之分:一般来说: 插入 > 选择 > 冒泡冒泡:不变性:在排序过程中,已排好的那部分(即冒泡到的最终位置就是排序好的最终位置)保持不变,不参与后来的排序效率:要进行(N-1) + (N-2) +,,,+1 = N(N-1)/2 ,约在N^2 / 2 的比较,假设有一半情况需要交换,则需要N^2 / 4次的交换选择:不变性:已选择好的那一段不参与排序,位置选好后就不变效率:和冒泡一样,进行N 阅读全文
posted @ 2011-05-25 22:30 jinmengzhe 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前。一个有向无环图的拓扑序列不是唯一的:进行拓扑排序的算法并不复杂:1)在有向图中选一个没有前驱(入度为0)的顶点且输出之2)从图中删除该顶点及它发出的弧(这样就得到了别的入度为0的顶点)。重复上述2步,直到输出全部顶点。从描述上可以看出,我们需要记录每个顶点的入度,实现如下:由于没有记录入度这一信息,先要求出一个入度数组,来表示每个顶点的入度,这个入度数组还要动态更新,当一个顶点 阅读全文
posted @ 2011-05-25 20:39 jinmengzhe 阅读(3618) 评论(1) 推荐(2) 编辑
摘要: 1)java集合框架的层次结构2)使用Collection接口定义的公用方法对集合和线性表操作3)使用Iterator接口遍历集合4)使用JDK的增强for循环替代迭代Iterator进行集合遍历5)熟悉Set接口,了解何时及如何使用HashSet,LinkedHashSet或TreeHashSet来存储元素6)使用Comparator接口来比较元素7)熟悉List接口,了解何时以及如何使用ArrayList或者LinkedList来存储元素8)区分Vector与ArrayList,并了解如何使用Vector和Stack9)使用JDK1.5的一般类型来简化程序设计10)理解Collection 阅读全文
posted @ 2011-05-25 19:33 jinmengzhe 阅读(14028) 评论(4) 推荐(2) 编辑