二分查找:要查找的值和要查找区域的中间元素比较。时间复杂度最好是1,最差是log2n+1。
插值查找:mid = low + (key - a[low]) / (a[high] - a[low]) * (high - low),也就是将上述的比例参数1/2改进了,根据关键字在整个有序表中所处的位置,让mid值的变化更靠近关键字key,这样也就间接地减少了比较次数。
对于表比较长,且关键字分布均匀的表,插值查找优于二分查找。时间复杂度O(logn)。
线性索引查找:
稠密索引:索引项按关键码有序的排列。 运用折半、插值、斐波那契等有序查找算法进行查找。
分块索引:把数据集的记录分成了若干块,并且这些块需要满足两个条件。根据每一块中的最大关键字码查找块,块内数据无序,因此只能顺序查找。
倒排索引:记录具有相同次关键字的记录的记录号。比如记录都含有book单词的句子号。
二叉排序树查找:若它的左子树不空,则左子树上所有节点的值都小于它的根节点的值;若它的右子树不为空,则右子树上的所有节点的值均大于它的根节点的值。它的左右子树也为二叉排序树。