作为合格的程序员,掌握基本的常用算法的重要性不言而喻;二分查找作为简单高效的查找算法,掌握其用法是非常重要的。
- 1.二分查找是什么?
- 二分查找是一种高效的查找算法,它通过折半比较的方式实现高效查找。二分查找的前提是在一个有序的序列的线性表中。
- 2.二分查找的过程
-
计算出序列中间位置的索引,将目标值与索引对应的值比较
-
如果目标值与索引值相等,返回索引值
-
如果索引值小于目标值,则表明目标值在索引值的右边,则在右侧搜索
-
如果索引值大于目标值,则表明目标值在索引值的左边,则在左侧搜索
- 3.二分查找的JAVA实现代码
public class BinarySearch {
public static void main(String[] args) {
int []num = new int[]{1,3,5,6,7,9,10};
int findResult = 5;
System.out.println(findAndReturnResult(num,findResult));
}
static Integer findAndReturnResult(int[] num, int findResult){
int left = 0,right = num.length - 1;
int tmp;
while(left <= right){
tmp = left + (right - left) / 2;
if(num[tmp] == findResult){
return tmp;
}
if(num[tmp]>findResult){
right = tmp - 1;
}
else{
left = tmp + 1;
}
}
return null;
}
}
- 4.二分查找的图解过程
- 下图是代码中的num数组

- 根据代码的算法处理逻辑,首先先初始化左指针和右边指针;

- 计算中间索引值,并且比较索引对应的值与目标值

- 遵循规则:
-
如果目标值与索引值相等,返回索引值
-
如果索引值小于目标值,则表明目标值在索引值的右边,则在右侧搜索
-
如果索引值大于目标值,则表明目标值在索引值的左边,则在左侧搜索
- 在第三次比较中num[2] == 5 ,退出循环返回对应索引值5;
Ps:
- 1.循环的条件是左指针小于或等于右指针
- 2.二分查找的算法的时间复杂度为O(log2n)
- 5.二分查找在生活中的应用
- 二分查找算法有可能被不法分子拿来诈骗,当然程序猿学会二分查找后,就不会上当。