算法与数据结构
文章平均质量分 79
xxMYxx
这个作者很懒,什么都没留下…
展开
-
第二章 算法分析
第二章 算法分析算法是为求解一个问题需要遵循的,被清楚的指出的简单指令集合本章将讨论1.如何估计一个程序所需要的时间2.如何将一个程序的运行时间从天降到秒甚至更少3.粗心使用递归的后果4.将一个数自乘得到其幕,以及计算两个数的最大公因数的非常有效的算法2.3 要分析的问题通常,要分析的最重要的资源就是运行时间影响程序运行时间的因素有1. 编译器和计算机2原创 2016-06-28 14:57:00 · 575 阅读 · 0 评论 -
第4章 树
第4章 树对于大量的输入数据,链表的线性访问时间太慢,本章谈论一种简单的数据结构,其大部分操作的运行时间平均为0(log N)二叉查找树是两种库集合类TreeSet和TreeMap实现的基础4.1 预备知识树可以用几种方式定义,定义树的一种自然方式是递归的方式。一棵树是一些节点的集合,这个集合可以是空集,若不是空集,则树由称作根(root)的节点r以及0个或者多个非空的子树组成原创 2016-07-25 14:23:25 · 336 阅读 · 0 评论 -
第3章 表 栈 和 队列
第3章 表 栈 和 队列每一种有意义的程序都将显示的至少使用一种这样的数据结构,而栈总是要被间接的使用到3.1 抽象数据类型抽象数据类型(ADT)是带有一组操作的一些对象的集合,抽象数据类型是数学的抽象,在ADT的定义中没有提到关于这组操作时如何实现的任何解释。3.2 表ADT我们将处理形如A0 A1 A2 .... AN-1 的一般的表,我们说这个表的大小为N原创 2016-07-04 16:17:36 · 369 阅读 · 0 评论 -
第 5章 散列
第 5章 散列散列表的实现常常叫做散列(hashing),散列是一种用于以常数平均时间执行插入、删除和查找的技术,但是,那些需要元素见任何排序信息的树操作将不会得到有效的支持 5.1 一般想法理想的散列表数据结构只不过时包含一些项的具有固定大小的数组。 5.2 散列函数如果输入的关键字是整数,则一般合理的方法就是直接返回key mod tablesize ,除非原创 2016-07-28 13:57:31 · 1762 阅读 · 0 评论 -
第6章 优先队列
第6章 优先队列6.1 模型优先队列至少运行有以下两种操作的数据结构 insert 以及deleteMin6.2 一些简单的实现1. 我们可以使用一个简单的链表在表头以O(1)执行插入操作,并遍历该链表以删除最小元,这又需要O(N)时间,另一种是让链表保持排序状态,这使得插入代价高昂O(N),而删除花费低廉O(1)2. 另一种是实现是使用二叉查找树 它对这两种操作的平均运行时间原创 2016-08-01 15:09:11 · 380 阅读 · 0 评论 -
第7 章 排序
第7 章 排序不能在主存中完成而必须在磁盘或磁带上完成的排序叫做外部排序目标(内部排序)1. 存在几种容易的算法以 O(N2)完成排序2. 有一种算法叫做希尔排序,它编程非常简单,以 O(N2)运行,并在实践中很有效3. 存在一些稍微复杂的0(N log N)的排序算法4. 任何通用的排序算法均需要Ω(N log N)此比较 7.1 预备知识正如1.4 节所原创 2016-08-05 14:06:55 · 473 阅读 · 0 评论