数据结构与算法分析(c语言描述)
文章平均质量分 82
拾贝壳的小顽童
五月开始拾贝壳九月中旬见分晓
展开
-
第一章_引论
利用五一的空闲时间,看了下第一章的引论,网上都说这本书不错,看了第一章后感觉还好吧,至少不是在概念上的泛泛而谈,总有一点干货给你思考。下面总结下引论的内容:一开始就给出了两个例子:寻找第K大的数和字谜游戏。我对寻找第K大的数并不陌生,之前有编过线性时间找出第K大数的程序,偷笑中。第二个字谜游戏看似比较复杂,到时给出想法就不写代码了。接下来是数学知识的复习,换底公式,级数求和,级数收敛,原创 2013-05-01 11:18:19 · 1810 阅读 · 2 评论 -
第二章_算法分析
对于算法的分析需要用到一些渐进记号(O,Ω,Θ,o)T(N) = O(f(N))表示T(N)的增长率小于等于f(N)的增长率;T(N) = Ω(f(N))表示T(N)的增长率大于等于f(N)的增长率;T(N) = Θ(f(N))表示T(N)的增长率等于f(N)的增长率;T(N) = o(f(N))表示T(N)的增长率小于f(N)的增长率。书上有一个法则3我觉得应该记一下:对于任意常数k,l原创 2013-05-04 21:54:19 · 1738 阅读 · 1 评论 -
第四章 树(1)
预备知识树的递归定义:一棵树是一些节点的集合,这些集合可以是空集;若非空,则一棵树由根节点r和0个或多个非空的子树T1,T2,…,Tk组成,这些子树中的每一棵的根都被来自根r的一条有向边所连接。树的这种递归定义使得在编写有关树的程序时递归地编写比较方便。 从节点n1到nk的路径的长定义为该路径上边的数目。 对任意节点ni,ni的深度是从根到ni的唯一路径长。根的深度是0。原创 2013-05-24 09:38:24 · 963 阅读 · 0 评论 -
第四章 树(2)
AVL树一棵AVL树是每个节点的左子树和右子树的高度最多相差1的二叉查找树(空树的高度定义为-1)。 插入一个节点可能会破坏AVL树的平衡性。如果发生这种情况就需要把平衡性质恢复了之后才认为插入这步完成。 在插入之后,只有那些从插入点到根节点的路径上的节点的平衡可能会被改变,因为只有这些节点的子树可能会发生变化。当我们沿着这条路径上行到根并更新平衡信息时,我们可以找到一个节点,原创 2013-05-24 21:10:44 · 953 阅读 · 0 评论 -
第五章_散列
散列表ADT,只支持二叉树查找所允许的一部分操作。比如插入,删除,查找等。那些需要元素间排序信息的操作将不会得到支持。比如FindMin,FindMax和线性时间按排序顺序打印整个表的操作时不支持的。 散列函数在理想状态是能将任何两个不同的关键字映射到不同的单元,但是这是不可能,因为关键字是无穷的,但是散列表是有大小的。所以我们要找的散列函数应该能够在单元之间均匀的分配关键字。而且需要能够原创 2013-05-26 22:27:27 · 804 阅读 · 0 评论