/**
* 二分查找,又称折半检索,可缩小一半的检索区间
*/
import java.util.Arrays;
public class BinarySearch {
public static void main(String[] args) {
int[] arr={30,20,50,100,8,7,2,1,3};
Arrays.sort(arr); //条件:先将其排序
System.out.println(Arrays.toString(arr));
System.out.println(myBinarySearch(arr,100));
}
public static int myBinarySearch(int[] arr,int value) {
int low=0 , high=arr.length-1;
while(low<=high) {
int mid=(low+high)/2;
if(value==arr[mid]){ //将给定值与中间元素进行比较,若相等,则检索成功
return mid;
}
if(value>arr[mid]){
low=mid+1;
}
if(value<arr[mid]){
high=mid+1;
}
}
return -1;
}
}
运行结果
[1, 2, 3, 7, 8, 20, 30, 50, 100]
8
12-25
1263
12-19
1092
01-26
1267