1.二分查找的基本思想
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较
a. 如果x=a[n/2],则找到x,算法中止
b. 如果x<a[n/2],则只需要在数组a的左半部分继续搜索x
c.如果x>a[n/2],则只需要在数组a的右半部分继续搜索x
2.二分查找时间复杂度
时间复杂度即是while循环的次数
总共有n个元素,渐渐跟下去就是n,n/2,n/4,... ,n/2^k
由于2^k取整后为>=1
即令n/2^k=1
可得k=log2n(以二为底,n的对数)
所以时间复杂度可以表示为O(n)=O(log2 n)或者
O(n)=O(log n)
3.二分查找模板
二分查找的题目是一个比较简单的模板题,很多题目只要理解题意直接套模板就解出来了。
一般而言,当一个题目是出现以下特性,我们就应该联想到他可能需要使用二分查找
a.待查找的数组有序或者部分有序
b.要求时间复杂毒液低于O(n),或者直接要求时间复杂度为O(log n)
二分查找有几个具体的模板:
1.标准的二分查找
首先,标准二分查找适用的场景:数组元素