一、二分查找的思路
要使用二分查找,首先要确保已知数组是有序的
1.首先确定该数组的中间的下标 mid= (left+right) / 2
2.然后让需要查找的数findvalue和arr[mid]比较
2.1 findvalue >arr[mid],说明你要查找的数在mid的右边,因此需要递归的向右查找
2.2 findvalue<arr[mid],说明你要查找的数在mid的左边,因此需要递归的向左查找
2.3 findvalue ==arr[mid]说明找到,就返回
3.结束递归
1)找到就结束递归
2)递归完整个数组,仍然没有找到findvalue,也需要结束递归当left> right就需要退出
二、二分查找代码
package search;
public class BinarySearchTest {
public static void main(String[] args){
int[] arr ={1,55,62,75,99,125,356,1234};
int findIndex = BinarySearch(arr, 0, arr.length - 1, 99);
if (findIndex != -1){
System.out.println("查找成功,返回索引findIndex ="+findIndex);
}else{
System.out.println("查找失败,数组中没有这个数!!");
}
}
public static int BinarySearch(int[] arr,int left,int right,int findValue) {
//没有找到,结束递归
if(left > right){
return -1;
}
int mid = (left + right)/2;//定义中间索引
int midValue = arr[mid] ;//定义中间值
//判断输入值findValue的位置
if(findValue > midValue){//向右递归
return BinarySearch(arr,mid +1 ,right,findValue);
}else if(findValue < midValue){//向左递归
return BinarySearch(arr,left,mid-1,findValue);
}else{
return mid;
}
}
}
截图