2011年7月20日

Splay树简介

摘要: 【转】计算机算法和数据结构中,有各种多样的树,比如AVL树,红黑树,B+树等等,这几种树主要的主要目的是尽量保持平衡,保证即使在最坏情况下,时间复杂度是O(logN),也就是说,从根节点到最底层的叶子节点,路径不会相差太远。比如B+树,它通过节点的分裂来保持尽量平衡,而且这种树比较散,高度不高,访问路径都比较短,比较适合在数据库中作索引。但是今天我要说一说splay树,我不知道中文叫什么名字,也许该叫它“变根树”。Splay树与众不同的是:它并不一味追求平衡,而是追求整体的效率。当一个节点被访问以后,通过树的旋转,这个节点被移动到最上层,成为新的根节点。旋转以后,这棵树有可能变得很不平衡。但是 阅读全文

posted @ 2011-07-20 21:24 龙豆 阅读(1861) 评论(0) 推荐(1)

AVL树

摘要: ZhangFei 12.00 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 【转】数据结构学习(C++)——平衡二叉树(AVL树)这个恐怕是整个《数据结构》教科书里面最难的和最“没用”的数据结构了(现在的教科书还有部分算法内容)。说它没用,恰恰是因为它太有用——有着和普通的二 叉搜索树完全一样的接口界面,绝大多数情况下比普通的二叉搜索树效率高(很多)。因此,通常情况下,人们都是一劳永逸的——写完后就重用,而不会再写了。 所以说,你虽然学完了平衡二叉树,但很可能你永远也不会亲. 阅读全文

posted @ 2011-07-20 20:59 龙豆 阅读(1400) 评论(0) 推荐(1)

红黑树(red-black tree)算法,附AVL树的比较

摘要: 【转】【经典】导读: linux内核中的用户态地址空间管理使用了红黑树(red-black tree)这种数据结构,我想一定有许多人在这种数据结构上感到困惑,我也曾经为此查阅了许多资料以便了解红黑树的原理。最近我在一个外国网站上看到一篇讲解红黑树的文章,觉得相当不错,不敢独享,于是翻译成中文供所有内核版的弟兄们参考。由于本人水平有限,难免有出错之处,欢迎大家指正。 原文网址:http://sage.mc.yu.edu/kbeen/teaching/algorithms/resources/red-black-tree.html 加两个链结地址: 红黑树的实地使用 http://www.linu 阅读全文

posted @ 2011-07-20 20:55 龙豆 阅读(7531) 评论(0) 推荐(0)

算法导论-14.1-8

摘要: 【题目】现有一个圆上的n条铉,每条铉都是按其端点来定义的。请给出一个能在O(n log n)的算法,确定圆内相交铉的对数(例如:如果n条铉都是直径,他们交于圆心,则正确的答案为C(n,2),组合数)。另外任意两条铉没有公共点。【解答】[转] 通过角度来判断两条弦是否相交,这样可以在O(n*logn)内完成。 对于两条弦P1P2和Q1Q2来说(顺时针),圆心与端点形成的向量有一个角度A 如果A(P1)<A(Q1)<A(P2)<A(Q2)或者A(Q1)<A(P1)<A(Q2)<A(P2),这样角度区间“交叉”就意味着两条弦有交叉。 通过角度来统计交叉弦的对数,和 阅读全文

posted @ 2011-07-20 16:31 龙豆 阅读(896) 评论(0) 推荐(1)

导航