1.顺序查找。
从表的一端开始,向另一端逐个按给定的key进行比较,若找到,则查找成功,若整个表走完未找到,则查找失败。
性能分析:
时间:O(n)
2.分块查找。顺序查找及折半查找的改进版。折半查找虽然具有很好的性能,但其前提条件时线性表顺序存储而且按照关键码排序,这一前提条件在结点树很大且表元素动态变化时是难以满足的。而顺序查找可以解决表元素动态变化的要求,但查找效率很低。
又称为索引查找,要求待查找表可以无序,但分表必须有序。
性能分析:
当所分的子表数量为根号n时,性能最佳,为
3.二分查找。(二叉判定树)
适用于有序表,取待扫描表区域的中段进行判断,根据大小选择左区还是右区,依次折半,若最终未找到,则查找失败,否则查找成功。
性能分析:
时间:O(logn)
4.插值查找。改进后的二分查找。
适用于有序表且表中元素间排列均匀。将二分查找中固定的每次从1/2处进行比较,改为根据关键字在待查找区域中的比例,来进行折半比较。
性能分析:
时间:O(logn)。但对于基数较大的有序表,而待查找目标在头部或尾部的查找,查找的平均性能要好得多。
5.斐波那契查找。利用斐波那契数列的性质,黄金分割原理确定折半判断的位置。
适用于有序表且该表的表长度为斐波那契数列中某一个数-1的值。折半位置的判定为前一个斐波那契数列的数-1的下标位置。
性能分析:
时间:O(logn)。算法优点是不像二分查找的含加减除运算及插值查找的复杂四则运算,仅仅用加减运算求的折半下标值。
6.