Chapter 5 查找
Chapter 5 查找
1- 顺序查找法 O(n)
2- 折半查找O(logn) :二分查找
要求:关键字有序
过程:
判定树:叶子结点为方框,代表不成功的结点。
3- 分块查找:索引顺序查找
ASL = ASL1+ASL2
4- 二叉排序树(BST)
特点:左<根<右
5- 平衡二叉树(AVL)
6- B-树(B数)
特点:
1 分支数 = 关键字数 + 1,最大分支数就是B树的阶数
2 根结点至少有1个关键字,两个分支
其余结点至少有 个分支,
-1个关键字
3 结点内关键字互不相等按从小到大顺序排列
4 叶结点处于同一层,是查找失败到达的位置(计算结点数时要算上)
5 下层结点的关键字取值在上层所划分区间内
基本操作:
1 查找:多路查找
2 插入:可能引起拆分,多次拆分叫连锁反应
3 删除:直接删,不够找兄弟借,再不够合并
7- B+树
B-树和B+树的区别:(先B+,后B-)
1 B+树:n个关键字n个分支
B-树:n个关键字n+1个分支
2 关键字个数: ≤n≤m
-1≤n≤m-1
根结点个数: 2≤n≤m 1≤n≤m-1
3 B+树:非叶子结点只是个索引,不包含关键字对应记录的存储地址
B-树:每个关键字对应一个记录的存储地址
B+树:叶子结点包含信息和全部关键字,叶子结点引出的指针指向记录
B+树:有一个指针指向关键字最小的叶子结点,所有叶子结点链接成一个线性链表
8- 散列表(哈希表)
H(key) ---- 哈希地址
发生冲突----同义词
Hi(key)----解决冲突后的地址
查找成功的ASL1 = 每个关键字的比较次数
查找失败的ASL2 = 由该地址开始到空地址为止进行比较操作的次数
常见Hash函数构造方法:除留取余法
常见解决冲突方法:
1 开放定址法:包括线性探查法等…
2 链地址法:
性能分析:α(装填因子) = 关键字个数/表长
Hash表的ASL与α有关,与关键字无关。
注:
1 顺序表查找优点是顺序/链式均可,缺点是n较大时,ASL大,效率低
2 折半查找适合顺序,不适合链式,且要求有序