一、二分法查找
适用于有序数组
思路:每次将数组分为左右两边,通过中间元素与左右两边的元素进行比较得出所找元素到底是在左半区间还是右半区间;然后对其所在的区间做同样的处理,直至找到。
二、差值查找
与二分查找的区别是,切分区间时不一定是对半切分(自适应,使得每次选取的区间尽可能靠近被查找数)。
三、斐波那契查找
使用黄金比例切割来划分区间
四、树表查找
使用树结构来查找
例:二叉查找树(子节点一定小于根结点,左结点一定小于右节点)
重点:将有序数列转换为二叉查找树
缺点:结构复杂
五、分块查找
称“索引顺序查找”,属于顺序查找的改进型
将线性表分为若干块(块内部可以是无序的,但是块之间必须有序 <前一块中的最大值必须小于后一块中的最小值>),然后将这些块建立索引表。查找时通过索引初步定位到对应的块,然后再在其中进行精确查找。
六、哈希查找
使用哈希表存放待查找数据,然后通过哈希表进行查找