就是依次和中间相比较,比中间大,往右边找,比中间小,往左边找(前提是有序) 比较简单
package com.wuzhixin.suanfa;
public class BinarySearch {
public static void main(String[] args) {
int arr[] = {1,3,8,10,11,67,100};
int i = binarySearch( arr,100);
System.out.println(i);
int j = rerusion(arr,1,0,arr.length);
System.out.println(j);
}
public static int binarySearch(int []arr,int target){
int left = 0;
int right = arr.length-1;
while(left<=right){
int mid = (left+right)/2;
if(target==arr[mid]){
return mid;
}else if(target<arr[mid]){
right = mid-1;
}else{
left=mid+1;
}
}
return -1;
}
public static int rerusion(int[]arr,int target,int start,int end){
int mid = (start+end)/2;
while(start<=end) {
if (target == arr[mid]) {
return mid;
}else if(target<arr[mid]){
return rerusion(arr,target,start,mid-1);
}else{
return rerusion(arr,target,mid+1,end);
}
}
return -1;
}
}