import java.util.*;
/**
* E类包含了main方法,用于执行程序。
*/
public class E {
/**
* 程序的主入口函数。
* @param args 命令行参数(未使用)
*/
public static void main(String args[]){
// 初始化起始点、结束点和中间点
int start=0,end,middle;
// 定义并初始化一个整型数组
int a[]={12,45,67,89,123,-45,67};
// 获取数组的长度
int N=a.length;
// 对数组进行升序排序
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
if(a[i]>a[j]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
// 使用Scanner从标准输入读取数据
Scanner scanner=new Scanner(System.in);
System.out.println("输入整数,程序判断该整数是否在数组中:");
int number=scanner.nextInt();
int count=0; // 用于计数查找次数
end =N;
middle =(start+end)/2; // 初始化中间点
// 采用二分查找法寻找指定元素
while(number!=a[middle]){
if(number>=a[middle]){
start=middle;
}else{
end=middle;
}
middle =(start+end)/2; // 更新中间点
count++;
// 当查找次数超过数组一半长度时,终止查找
if(count>N/2)
break;
}
// 根据查找次数判断元素是否在数组中
if(count>N/2)
System.out.printf("%d不在数组中,\n",number);
else
System.out.printf("%d在数组中",number);
}
}