/**
* 最简单的情况就是有序数组中不存在重复元素,我们在其中用二分查找值等于给定值的数据
* 用 Java 代码实现了一个最简单的二分查找算法
*
* @param a 已经排序的数组
* @param n 数组大小
* @param value 待查找的值
* @return
*/
public static int bsearch(int[] a, int n, int value) {
//索引的最低位
int low = 0;
//索引的最高位
int high = n - 1;
while (low <= high) {
//二分差的中间位置 防止溢出
int mid = low + ((high - low) >> 1);
if (a[mid] == value) {
return mid;
} else if (a[mid] < value) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] a = new int[6];
a[0] = 1;
a[1] = 3;
a[2] = 5;
a[3] = 7;
a[4] = 9;
a[5] = 11;
int bsearch = SimpleBinarayFind.bsearch(a, 6, 7);
System.out.println(bsearch);
}
}