######Java中,二分查找法,为啥用index是否等于-1判断值是否存在
/*
已知有一个数组
char[] arr = {'a','b','h','m','t','z'};
从键盘输入一个小写字母,查找它是否在arr数组中,
请使用二分查找法。
*/
public class Exam2 {
public static void main(String[] args) {
char[] arr = {'a','b','h','m','t','z'};
//arr数组已经是有序的,不用再排序
Scanner input = new Scanner(System.in);
System.out.print("请输入你要查找的字母:");
char letter = input.next().charAt(0);
int index = -1;
for(int left=0,right = arr.length-1; left<=right; ){
int mid = left + (right-left)/2;
if(arr[mid] == letter){
index = mid;
break;
}else if(arr[mid] < letter){
//去右边
left = mid + 1;
}else {
right = mid - 1;
}
}
if(index == -1){
System.out.println("不存在");
}else{
System.out.println(letter+"在arr的下标是" + index);
}
input.close();
}
}
请输入你要查找的字母:d
不存在
这句话代码逻辑如何使index=-1的呢?
index 记录查找的元素在数组中的下标,-1 表示在数组中没有找到对应查找的数据【即初始化就是-1】
···
index =-1 是初始化下标值 这个index就是你查找的数据的下标
因为数组的下标是从0开始 -1就是肯定不存在的下标 所以index的初始化值是不能为数据下标 -1就是方便判断
···
你写这段代码是为了什么?为了找个是否存在这个字母,那你总得有个变量来存吧