折半查找:
又称二分查找,仅适用于有序的顺序表。就是通过中间值来查找元素。
在折半查找的判定树中,若mid=[(low+high)/2],则对于任何一个结点,必有:右子树节点数-左子树结点数=0或1
折半查找的判定树一定是平衡二叉树,折半查找的判定树中,只有最下面一层是不满的,因此,元素个数为n时树高h=[log2(n+1)]
分块查找:
最主要就是先分区让寻找步骤简化
设置索引查找表和块内查找的平均查找长度分别为L1,L2,则分块查找的平均查找长度为ASL=L1+L2
特点:块内无序,块内有序。
索引表:里面主要是保存每一个分块的最大关键字和分块的存储区间
算法过程:
1.在索引表中确定待查记所属的分块(可顺序,可折半)
2.在块内顺序查找
B树
如何保证查找效率:
m叉查找树,规定了除了根节点外,任何结点至少有m/2个分叉,即至少含有[m/2]—1个关键字
定义:又称多路平衡查找树,b树中所有结点的孩子个数的最大值称为b树的阶,通常用m表示。
b+树:
B+树是一种常用语文件组织的B树的变形树。一棵m阶的B+树和m阶的B树的差异在于:
有k个孩子的结点必含有k个关键字。
所有的叶结点中包含了关键字的信息及指向相应结点的指针,且叶子结点本身依照关键字的大小从小到大顺序链接。
所有非终端结点可看成是索引部分,结点中仅含有其子树(根结点)中的最大关键字(或最小)关键字。
散列表查找
散列的概念:
又是一种存储方式又是一种查找方式,散列的基本思想是通过由散列函数决定的键值与散列地址之间的对应关系来实现存储组织和查找运算。
散列函数的构造方法
1直接地址法 2.数字分析法 3.构造分析法 4.平方取中法 5.折叠法
处理冲突的方法:
1.开放地址法 2.线性探查法 3.拉链法