import java.util.Scanner;
/* 二分查找
* 1.使用Scanner输入一个你要找的数字
* 2.定义一个有序的数组
* 3.定义一个中间数
* 4.找到返回的数,否则返回-1
*/
public class Test1 {
public static void main(String[] args) {
//产生输入对象
Scanner sc = new Scanner(System.in);
//定义一个数组
int[] arr = {3,6,9,12,55,77,99};
//提示输入一个数字
System.out.println("请输入你要找的数字(3,6,9,12,55,77,99):");
int num = sc.nextInt();
//调用一个方法进行查找并返回结果
int key = search(arr,num);
//判断
if(key!=-1){
System.out.println("你要找的数是:"+arr[key]+",索引是:"+key);
}else {
System.out.println("没有你要找的数!");
}
}
static int search(int[] arr,int num) {
//如果这个数组的元素只有一个或者空
if(arr == null || arr.length <= 1) {
return -1;
}
//定义一个起始索引
int left = 0;
//结束的索引
int right = arr.length-1;
//判断 如果left <= right,进入循环查找
while(left <= right) {
//定义一个中间数
int mid = (left + right)/2;
//第一种情况
if(arr[mid] == num) {
return mid;
}else if(arr[mid] > num) {
right = mid - 1;
}else if(arr[mid] < num) {
left = mid + 1;
}
}
//实在找不到返回-1
return -1;
}
}