2014年4月17日

《算法导论》笔记 第12章 12.1 二叉查找树

摘要: 【总结】终于刷到这里了。二叉查找树性质:设x为二叉查找树中的一个节点。如果y是x的左子树中的一个结点,则key[x]=key[y]。如果x是一棵包含n个结点的子树的根,则调用INORDER-TREE-WALK(x)过程的时间为Θ(n)。 void inoderTreeWalk(NODE *rt) { if (rt->l) inoderTreeWalk(rt->l); coutkeyr) inoderTreeWalk(rt->r); }【练习】12.1-1 基于关键字集合{1,4,5,10,16,17,21},画出高度为2、3、4、5、6的二叉查找树。12... 阅读全文

posted @ 2014-04-17 21:30 电子幼体 阅读(362) 评论(0) 推荐(0) 编辑

《算法导论》笔记 第11章 总结与思考

摘要: 【总结】证明题实在是太多,本章练习搞起来很吃力。但是代码却相当好写。重点在散列函数的设计。【思考】11-1 最长探查的界11-2 链接法中槽的大小11-3 二次探查11-4 k全域散列和认证 阅读全文

posted @ 2014-04-17 20:09 电子幼体 阅读(293) 评论(0) 推荐(0) 编辑

《算法导论》笔记 第11章 11.5 完全散列

摘要: 【笔记】暂无!【练习】*11.5-1 阅读全文

posted @ 2014-04-17 19:56 电子幼体 阅读(217) 评论(0) 推荐(0) 编辑

《算法导论》笔记 第11章 11.4 开放寻址法

摘要: 【笔记】开放寻址法:所有元素都存放在散列表里。当查找一个元素时,要检查所有的表项,直到找到所需的元素,或者最终发现该元素不在表中。删除操作:在槽中置一个特定的值DELETED。因此在必须删除关键字的应用中,往往采用链接法解决碰撞。计算开放寻址法中的探查序列:线性探查:h(k,i) = (h'(k)+i) mod m, i = 0,1,...,m-1二次探查:h(k,i) = (h'(k)+c1*i+c2*i^2) mod m双重散列:h(k,i) = (h1(k)+i*h2(k)) mod m双重散列是用于开放寻址法最好的方法之一,因为它所产生的排列具有随机选择的排列的许多特性 阅读全文

posted @ 2014-04-17 19:50 电子幼体 阅读(469) 评论(0) 推荐(0) 编辑

《算法导论》笔记 第11章 11.3 散列函数

摘要: 【笔记】好的散列函数:每个关键字都等可能地散列到m个槽位中的任何一个之中去,并与其他的关键字已被散列到哪一个槽位中无关。如果所给关键字不是自然数,则必须有一种方法来将它们解释为自然数。除法散列表:h(k) = k mod m。乘法散列表:h(k) = floor(m(kA mod 1)),用关键字k乘上常数A(0<A<1),并抽取出kA的小数部分。然后,用m乘以这个值,再取结果的底。【练习】11.3-1 假设我们希望查找一个长度为n的链表,其中每一个元素都包含一个关键字k和一个散列值h(k)。每一个关键字都是长字符串。在表中查找具有给定关键字的元素时,如何利用各元素中的散列值。先求 阅读全文

posted @ 2014-04-17 15:21 电子幼体 阅读(932) 评论(0) 推荐(0) 编辑

导航