public class BinarySearch {
public static void main(String[] args) {
int[] array = {11, 22, 33, 44, 55, 66, 77, 88, 99};
int target = 88;
int result = binarySearch(array, target);
System.out.println(result);
}
//二分查找,找到返回元素索引,找不到返回 -1
public static int binarySearch(int[] a, int t) {
int l = 0, r = a.length - 1, m;
while (l <= r) {
m = (l + r) / 2;
if (a[m] == t) {
return m;
} else if (a[m] > t) {
r = m - 1;
} else {
l = m + 1;
}
}
return -1;
}
}
1.已有一组有序数组。
2.定义左右边界L、R。
3.获取中间索引 M = Floor(L+R)/ 2
Floor 因为M表示 数据在数组中的位置 所以为向下取整。
4.中间索引的值A[M]与搜索值T比较。
5.当L>R时,查找结束,退出循环。



