使用java完成二分算法。自己写的可能有错
package com.test;
public class Test2 {
// 使用二分算法计算某个数在哪个位置,即每次取中间值进行比较
// 如果这个数小了将最小值设为中间数,如果这个数大了将最大值设为中间数
// 重复以上步骤、但由于java每次进行除法后都是去掉小数点以后的数字。所以应该考虑最后一个值的情况
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
int a = 4;
int min = 0;
int max = arr.length - 1;
int count = 0;
while (min < max) {
count++;
int mid = arr[(min + max) / 2];// 5.5 = 5
if (a > mid) {
min = (min + max) / 2;
if (mid == arr[arr.length - 2]) {
System.out.println(count + " a > mid ");
System.out.println(arr[arr.length - 1]);
break;
}
}
if (a < mid) {
max = (min + max) / 2;
}
if (a == mid) {
System.out.println(count);
System.out.println(mid);
break;
}
}
}
}