二分搜索算法(Java代码实现)
(1)判断是否适合分治法实现
(2)实现二分搜索的Java代码如下:
public class Main {
public static void main(String[] args) {
int[] arr = { 11, 22, 33, 44, 55, 66, 77 };
int index1 = Binary(arr, 12, 0, arr.length - 1);
int index2 = Binary(arr, 66, 0, arr.length - 1);
System.out.println(index1);
System.out.println(index2);
}
/**
* 搜索指定要搜索元素在数组中是索引
*
* @param arr:要二分搜索的数组
* @param key:要查找的关键字
* @param low:起始索引
* @param high:结尾索引
* @return:若搜索到这个元素,则返回数组的索引下标;否则返回-1
*/
public static int Binary(int[] arr, int key, int low, int high) {
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] > key) {
high = mid - 1;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
(3)运行结果:
(4)复杂度分析: