您的位置:首页 > 理论基础 > 数据结构算法

数据结构之三大查找

2016-03-08 22:57 134 查看
[code]                    数据结构之三大查找


一.静态查找表

附:ASL(平均查找长度)=∑ (1-n) P(i)C(i)

P(i):查找表中第i个记录的概率(个人理解:比较一次正确概率)。

c(i):当给定值与表中记录相等时候,已经比较的次数,C(i)随过程不同。

1.顺序表的查找

条件:顺序表或者线性链表示的查找表

成功查找时平均查找长度:(n+1)/2

失败查找时平均查找长度:3(n+1)/4

2.有序表的查找

(1) 折半查找

成功查找时平均查找长度:[(n+1)㏒₂(n+1)]/2

(2)菲波那切查找

适用:关键字均匀,表长大,其平均性能比折半查找好

3.静态树表的查找(各记录查找概率不等时)

(1)静态最优查找树(权值高的在上面)

PH值最小。

代价太高,不讨论→_→

(2)次优查找树

PH值近似最小

具体实现字数太多,这里只列概念和框架,具体参见吴伟民办数据结构P223

4.索引顺序表的查找

(1)分块查找,又称索引顺序查找。

分块有序:第一块数据最小,依次增大。

方法:每块有个最大值索引,和开始地址,比较就可以得到数据所在数据块,然后在块内可以顺序查找或者折半查找(必须有序)。

二.动态查找表

概念:表本身是在查找过程中生成的,即找到关键字,成功返回,否则插入。

1.二叉排序树和平衡二叉树。

(1)二叉排序树(二叉查找树)

左节点<跟节点<右节点

有类似于折半查找的特性,链表,插入不需要移动。

删除(看不懂)现成算法在P230.

(2)平衡二叉树(***L树)

深度:左右子树深度差不超过1

平衡因子:绝对值不大于一

有点难,先跳过

2.b-树和b+树.

(1)b-树

一棵m阶的b-树,或为空树,或满足下面特性的m叉树

①树中每个节点至多有m棵子树。

②若不是叶子节点,至少有2棵子树。

③若不是叶子节点,至少有m/2棵子树。

④所有非终节点包含以下信息(n关键字个数,A(i)指向子树指针,K(i)存在关系A(i-1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: