二分查找法 Binary Query 作者:哇塞:哇塞大嘴好帅(我爱大嘴网)
1.思路
二分查询要求数组的元素已经从小到大进行排序
数组中间的数和寻找的数作比较
演示视频:https://www.youtube.com/watch?v=sr_bR1WwcLY
查询中间值的算法 (minIndex + maxIndex) / 2
他的思路就是判断一个数组的中间下标的数据是否比我们要查找的值小,如果小那么他就在中间值+1到数组长度的区间重复上面的操作,判断中间下标的数据达还是小,如果中间下标小于我们要找到的值那么就0到mid-1的区间。
2. code
package com.dazuizui;
public class Application {
public static void main(String[] args) {
int a[] = {1,2,3,4,5,6,7,8,9,10};
int toBeQueried = 9;
System.out.println(BinaryQuery(a,0, a.length-1, 8));
}
public static int BinaryQuery(int arr[],int min,int max,int key){
//获取中间值
int mid = (min + max) /2;
//如果中间值这个下表
if (arr[mid] < key){
//如果中间值小于要查询的值那么 我们想找的值就在这mid下标的右侧,那么久调用本身方法 设置开始下标mid+1 最大为max
return BinaryQuery(arr,mid+1,max,key);
}else if(arr[mid] > key){
//如果中间值大于要查询的值那么 我们想找的值就在这mid下标的左侧,那么久调用本身方法 设置开始下标min 最大小标min-1
return BinaryQuery(arr,min,mid-1,key);
}else{
return mid;
}
}
}