package com.hui_binary;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//错误的代码,如果两个数例如查找99,最后两个的标志是12/13.两个的差一直是12,一只给mid赋值12,
//一只都是角标为12的比较,不会有变化。所以会出错,也就是当两个star和end的平均数不是整数的时候
//而且两个数还挨着,那么就会一直进行比较赋值。
int[] arr = {3, 4, 9, 15, 23, 25, 36, 45, 45, 59, 59, 78, 78, 99};
System.out.println("请输入你要查询的数字");
int key = new Scanner(System.in).nextInt();
int star = 0;
int end = arr.length - 1;
int mid = (star + end) / 2;
while (!(arr[mid] == key)) {
if (arr[mid] > key) {
end = mid;
mid = (star + end) / 2;
} else if (arr[mid] < key) {
star = mid;
mid = (star + end) / 2;
}
}
System.out.println("查找的数字的位置是:" + mid);
}
} |
|