实现思路:在一个有序的数组中(此例为升序),通过检查中间元素,和要找元素进行比较,大于要找的元素就在前半部分继续查找,小于就在后半部分查找。重复此操作直到找到,或不存在
public static void binarySearch(int[] array,int n){
int left = 0;
int right = array.length-1;
while (left <= right){
int mid = (left + right) /2;//找到中间元素下标
//和要找的元素进行比较
if (array[mid] > n){//大于要找的元素
right = mid - 1;//找mid之前的元素
} else if (array[mid] < n) {
left = mid + 1;//找mid之后的元素
}else {
System.out.println("找到了下标为:"+mid);
return ;
}
}
System.out.println("找不到");
}
//给定一个有序整型数组, 实现二分查找
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7,8,9};
Scanner scanner = new Scanner(System.in);
System.out.print("输入要查找的数字:");
int n = scanner.nextInt();
binarySearch(array,n);
}