折半查找前提:要在一个有序的数组中
public class Demo05 {
public static void main(String[] args) {
int[] array = new int[] {3,6,8,9,10,11,13,19,25};
//声明角标 最小 和 最大 角标 和折半角标
int min=0;
int max=array.length-1;
int mid=(max+min)/2;
//声明要查找的值
int key=13;
//循环查找 循环里肯定要折半的操作
//我现在已经 明确知道 循环什么时候停止
//使用 key 和 中间角标的值 比较 如果相等 循环停止
while(key!=array[mid]) {
if(key>array[mid]) {
min=mid+1;
}else if(key<array[max]){
max=mid-1;
}
//重复折半的操作
mid=(max+min)/2;
//如果数组中没有这个数 会造成死循环
//需要一个出口让程序停止
if(min>max) {
//这里说明 没找到这个数 需要停止循环
mid=-1;
break;
}
}System.out.println("坐标是:"+mid);
}
}