数据结构与算法学习
swingzhou93
这个作者很懒,什么都没留下…
展开
-
第2章 算法分析
知识点2.1 数学基础法则1:如果T1(N)=O(f(N))且T2(N)=O(g(N)),那么(a) T1(N)+ T2(N)= O(f(N)+ g(N))或者T1(N)+ T2(N)= O(max(f(N), g(N)))(b) T1(N)* T2(N)= O(f(N)* g(N))法则2:如果T(N)是一个k次多项式,则T(N)=Θ(N^k)法则原创 2017-03-19 21:33:40 · 475 阅读 · 0 评论 -
第3章 表、栈和队列
知识点3.1 抽象数据类型抽象数据类型是带有一组操作的一些对象的集合3.2 表ADT略3.3 Java Collections API 中的表增强for循环本质上便是迭代器迭代器的remove方法只能在next方法后使用,其删除next最新返回的项,并只能使用一次如果对正在迭代的集合进行结构上改变的方法,例如添加、删除、清空等则会在下步使用迭代器时报异常,因为改变结原创 2017-04-08 18:04:26 · 215 阅读 · 0 评论 -
第1章 引论
今年3月转行,从事JavaWeb开发工作。觉得以后想要较好的发展,除了提高上层应用技术水平,还应该学习计算机的基础课程,构建计算机知识系统。按照左飞老师提到的计算机学习路线,目前打算先学习算法和编译原理这第一条路线,估计在边工作边学习的状态下,至少得半年光景吧。同时,计划每学完一章,会写一篇博客,以作总结。算法这本书名字:数据结构与算法分析 Java语言描述 马克.艾伦.维斯著1.1 本书原创 2017-03-14 22:09:13 · 245 阅读 · 0 评论 -
第4章 树
第4章终于搞定了,太多的练习题了。知识点4.1 预备知识节点的深度为从根到该节点的唯一路径长度,节点的高度为该节点到一片树叶的最长的路径的长。树实现的一种方法是儿子/兄弟链方法,利于节省空间4.2 二叉树一棵二叉树的平均深度为根号N,一棵二叉查找树的平均深度为logN4.3 查找树ADT--二叉查找树查找树进行递归操作时,栈空间使用一般为logN4.4原创 2017-05-07 11:41:42 · 382 阅读 · 0 评论 -
第5章 散列
5.1 一般想法散列主要需要解决冲突发生时如何处理5.2 散列函数对于关键字为字符串时,若将字符串所有的字符相加得到哈希值,则对于大表而言,其值过小,使关键字集中于表的前面,分布不均。若只是取前面少数字符构造多项式,则实际组合数过少,对于大表的利用率低。最好的方法是对字符串的所有字符均使用多项式,提高利用率和使其分布均匀。5.3 分离链接法在分离链接法中,最好将元素插在链表前端原创 2017-05-17 22:24:53 · 297 阅读 · 0 评论 -
第8章 不相交集类
第8章 不相交集类8.1 等价关系等价关系需满足自反性、对称性、传递性三个性质。关系作用于整个集合,对集合中的每对元素起作用。8.2 动态等价性问题将具备等价关系的元素形成一个等价类集合,每个元素恰好分到一个集合中,这是由于等价关系的性质引起的。8.3 基本数据结构可以用树来表示一个等价类集合,该树的根则可作为等价类集合的名字。此树的每个节点只需要一个父节点链即可。原创 2017-06-11 09:59:22 · 343 阅读 · 0 评论 -
第6章 优先队列(堆)
优先队列优先队列数据结构属于计算机科学中最精致的一种6.1 模型优先队列允许至少两种操作:插入和删除最小者6.2 一些简单的实现优先队列的插入和删除最小者的最坏情形时间均为o(logN),但插入操作实际上将花费平均时间,若无删除操作的干扰,该结构的实现将以线性时间建立一个具有N项的优先队列6.3 二叉堆堆是一棵完全二叉树,但却不需要链的存在。因为完全二叉树的规律性,可以原创 2017-05-28 12:27:16 · 419 阅读 · 0 评论 -
第7章 排序
第7章 排序任何通用的排序算法均需要NlogN次比较7.1 预备知识略7.2 插入排序插入排序思想:在已排序状态插入新元素插入排序的最坏情形和平均情形均为n的平方7.3 一些简单排序算法的下界通过比较和交换来进行排序的算法本质上是消除序列中的逆序数,因此求解该算法的时间复杂度时,需要计算其排序序列的逆序数。7.4 希尔排序希尔排序需要一个最低为1的增量序列原创 2017-06-03 17:58:29 · 257 阅读 · 0 评论