一、顺序查找
时间复杂度:O(N)
代码实现:
二、折半查找(二分查找)
时间复杂度:O(logN)
实现条件:查找的对象要求是有序的
代码实现:
三、二叉树查找
时间复杂度:最坏的情况下是O(N),最好的情况下是O(logN)
性质:
- 如果他的左子树不空,那么左子树上的所有结点值均小于他的根结点值;
- 如果他的右子树不空,那么右子树上的所有结点值均大于他的根结点值;
他的左右子树也分别为二叉查找树。
代码实现:
四、差值查找(二分查找的改进)
时间复杂度:查找成功或者失败的时间复杂度均为O(log2(log2n))
改进:mid=low+(key-a[low])/(a[high]-a[low])*(high-low)
代码实现:
五、斐波那契查找
复杂度分析:最坏情况下,时间复杂度为O(log2n),且其期望复杂度也为O(log2n)