/*
* 题目要求:用户输入一个需要查找的数字,在数组中
* 找到这个数字并返回其在数组中的角标。(要求使用二分查找法)
*/
import java.util.Scanner;
public class binaryfind {
public static void main(String[] args) {
Scanner sc=new Scanner (System.in);
System.out.print("Please input that you need explore number in this array: ");
int key=sc.nextInt();
int[] arr1={1,2,6,9,20,27,32,48,66,88};
int index=binaryexplore(arr1,key);
if(index==-1) {
System.out.println("The number is not in this array!");
}else {
System.out.println("It is located in subscript equals "+index+",that you need search for the number in this array!");
}
}
public static int binaryexplore(int[] arr, int key) {
int max=arr.length-1;
int x;
int min=0;
while(true) {//这个while循环是二分搜索的核心代码
int mid=(max+min)/2;
if(min>max) {//min>max说明这个查找的数不在这个数组里面
return -1;
}
if (key>arr[mid]) {
min=mid+1;
}else if(key<arr[mid]) {
max=mid-1;
}else {
x=mid;
break;
}
}
return x;
}
}
二分搜索复杂度分析: