自己写的:
public class demo {
public static void main(String[] args) {
int[] arr = {-99, -88, -40, -13, 1 ,2, 40, 55, 89};
int a = 1000;
int head = 0;
int end = arr.length-1;
boolean flag = true;
for (int i = (end - head) / 2; i != head ; i = (end + head) / 2) {
if (a > arr[i]) {
head = i;
} else if (a < arr[i]) {
end = i;
} else {
System.out.println("找到了,位置在" + i);
flag = false;
break;
}
}
if (flag) {
System.out.println("没找到");
}
}
}
二分法(课讲)
package test_demo;
public class demo {
public static void main(String[] args) {
int[] arr = {-99, -88, -40, -13, 1, 2, 6,40, 55, 89};
int a = 7;
int head = 0;
int end = arr.length - 1;
boolean flag = true;
while (head <= end) {
int mid = (head + end) / 2;
if (a > arr[mid]) {
head = mid + 1;
} else if (a < arr[mid]) {
end = mid - 1;
} else {
System.out.println("找到" + mid);
flag = false;
break;
}
}
if (flag) {
System.out.println("没找到");
}
}
}