import java.util.Arrays;
import java.lang.String;
public class caogao {
public static void main(String[] args) {
int a[]= {1,5,6,7,8};
int key=4;
int low=0;
int high=a.length-1;
boolean flag=false;
while(low<high) {
int mid=(low+high)/2;
if(a[mid]>key) {
high=mid-1;
}else if(a[mid]<key) {
low=mid+1;
}else {
System.out.println(mid);
flag=true;
break;
}
}
if(!flag) {
System.out.println(-low-1);
}
}
}
首先,使用二分法的前提,数组一定是有序序列。
定义变量low、high,代表序列的头元素和尾元素。再定义中间值mid=(low+high)/2,将中间值和带寻找的值(key)进行比较;
当mid>key时,high=mid-1; 当mid<key时,low=mid+1;当mid==key时,表示找到了关键值。
当low>high时,表示序列中没有该值。