//本篇写的是对查找数组中某一元素进行二分查找
public class erfen {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in );
int arr[]=new int[6]; //定义数组的长度
for(int i=0;i<arr.length;i++){ //对数组的元素进行添加
System.out.println("输入数字");
arr[i]=input.nextInt();
}
Arrays.sort(arr); // 对数组元素进行升序排列
System.out.println("输入查找数字"); //输入要查找的数字
int searchnum=input.nextInt();
int starindex=0; // 起始位置为数组元素的下标为0的位置
int endindex=arr.length-1; //最终位置定为数组长度减一
int mindindex=-1; //先定义一个中间位置作为二分位置先赋值为 -1
boolean isfind=false; //定义布尔形变量 对是否找到 这个元素进行判断
do{ //用循环对数组进行查找 直至开始位置比最终位置大
mindindex=(starindex+endindex)/2; // 中间位置为起始位置到数组长度减1的位置
if(arr[mindindex]==searchnum){ //如果找到的刚好是中间那个数那就直接找到
System.out.println("恭喜找到了,查找位置是"+mindindex);
isfind=true;
break;
}else if(arr[mindindex]>searchnum){ // 如果找的数比中间位置的小那就开始从中间位置-1之前开始查找
endindex=mindindex-1;
}else{ // 如果找的数比中间位置的大那就开始从中间位置+1之后开始查找
starindex=mindindex+1;
}
}while(starindex<=endindex);
if(!isfind){
System.out.println("对不起没找到");
}
}
}