一、查找的基本概念
1.查找表(查找结构):用于查找的数据集合称为查找表。
2.适合静态查找表的查找方法:顺序查找、折半查找、散列查找等。
3.适合动态查找表的查找方法:二叉排序树的查找、散列查找等。
二、顺序查找和折半查找
1.顺序查找(线性查找)
(1)对顺序表和链表都适用;
(2)对线性的链表只能进行顺序查找。
2.折半查找(二分查找)
(1)仅适用于有序的顺序表;
3.分块查找(索引顺序查找)
(1)既有动态结构,又适于快速查找;
(2)块内元素可以无序,块间有序。
三、B树和B+树
1.B树(多路平衡查找树)
(1)B树是所有结点的平衡因子均等于0的多路平衡查找树;
(2)B树的查找:①在B树中找结点;②在结点内找关键字。
第一个查找操作是在磁盘上进行的,第二个查找操作是在内存中进行的。即在找到目标结点后,先将结点信息读入内存,然后在结点内采用顺序查找法或折半查找法。
2.B+树
(1)结点的子树个数与关键字个数相等;
(2)叶结点包含信息;
(3)叶结点包含了全部关键字;
(4)可以进行顺序查找(最小关键字开始)和多路查找(根结点开始);
(5)无论查找是否成功,每次查找都是一条从根结点到叶结点的路径。
四、散列表
1.二次聚集:指在处理冲突过程中发生的两个第一个哈希地址不同的记录争夺同一个后继哈希地址的现象。
2.再散列法:不易产生聚集,但增加了计算时间。
五、红黑树(满足特定性质的二叉排序树)
1.定义:左根右,根叶黑,不红红,黑路同(王道咸鱼)。
2.引入了n+1个外部结点。
3.从根到叶结点的最长路径不大于最短路径的2倍。
4.任一结点左右子树的高度相差不超过一倍。
六、胜者树和败者树(?)
胜者树和败者树都是完全二叉树,是树形选择排序的一种变形。每个叶结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。不同的是,胜者树的中间结点记录的是胜者的标号,而败者树的中间结点记录的是败者的标号。