public static void main(String[] args) {
// 二分查找法
int [] arr = {1,5,7,9,3};
// 前提:数列有序
int temp;
// 冒泡升序排序
for(int i = 0 ; i < arr.length - 1; i ++){
boolean isSorted = true;
for(int j = 0; j < arr.length - 1 -i; j ++){
if(arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
isSorted = false;
}
}
if(isSorted)
break;
}
// 二分查找
Scanner superman = new Scanner (System.in);
int num;
System.out.println("-- 输入要查找的数字:");
num = superman.nextInt();//
//
int start = 0;// 起始位置
int end = arr.length - 1;// 终止位置
int mid = (start + end) /2 ;// 中间位置
/*
*循环查找
*如果要查找的数比mid位置的大,则mid+1作为起始位置
*如果要查找的数比mid位置的小,则mid-1作为终止位置
*当要查找的数等于mid位置的数,查找成功
*/
while(start <= end){// start > end
if(num > arr[mid]){
start = mid + 1;
}else if(num < arr[mid]){
end = mid -1;
}else{
// 相等
System.out.println("存在:" + mid);
return;//结束
}
mid = (start + end) /2 ;// 重新计算中间位置
}
System.out.println("不存在:" + (-mid-1));
}
Q.E.D.