数据结构之三大查找

                    数据结构之三大查找

一.静态查找表

附: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)平衡二叉树(AVL树)
深度:左右子树深度差不超过1
平衡因子:绝对值不大于一
有点难,先跳过
2.b-树和b+树.
(1)b-树
一棵m阶的b-树,或为空树,或满足下面特性的m叉树
①树中每个节点至多有m棵子树。
②若不是叶子节点,至少有2棵子树。
③若不是叶子节点,至少有m/2棵子树。
④所有非终节点包含以下信息(n关键字个数,A(i)指向子树指针,K(i)存在关系A(i-1)

你可能感兴趣的:(数据结构)