1.静态查找表(顺序查找、折半查找、插值查找、静态最优查找树、静态次优查找树、分块查找)
插值查找适合关键字均匀分布的有序表。
如果有序表中各记录的查找概率不等,则使查找性能达最佳的判定树是其带权路径长度之和取最小值的二叉树,即静态最优查找树。构造静态最优查找树的时间代价较高,一般以次优查找树代替。构造次优查找树的方法是,取第i个节点作为根节点,使得左右子树的权值差最小。然后递归进行。
2.动态查找表(二叉排序树、平衡二叉树、B-树、B+树)
在随机情况下,二叉排序树的查找长度和log n等量级,最坏情况下,O(n)。
平衡二叉树查找的时间复杂度O(log n)。
B-树与B+树的区别在于B+树叶子节点包含了所有关键字信息。所以B+树的优势:1.内部节点不含关键字,所以小,所以最终读写代价更低。2.查询效率稳定。3.支持快速元素遍历。B*树内部节点保存了指向兄弟的指针,分裂的时候分配新节点的概率比B+树低,空间使用率更高。
3.哈希表
哈希函数的构造方法:直接定址法,取关键字或关键字的某个线性函数值为哈希地址;数字分析法,取关键字的若干数位组成哈希地址;平方取中法,取关键字平方后的中间几位为哈希地址;折叠法,将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为哈希地址;除留余数法,取关键字被某个不大于表长的数p除后所得余数为哈希地址。
处理冲突的方法:开放定址法,再哈希法,链地址法,建立公共溢出缓冲区。