java实现二分查找。
使用二分法查找的前提是要查找的结构必须是有序的,例如二叉树就是用的二分查找。
二分查找的时间复杂度为logn2。
原理设置一个小的值low和一个大的值high,初始时分别是数组的第一个元素位置和最后一个元素位置,将目标数值每次有数组中间的值 Array[middle] 比较大小,更改设置low或high。
代码如下:
public class BinarySearch {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5, 6, 7};
// 查找4在数组a中的位置
System.out.println(binarySearch(a, 4));
}
/*
* 非递归实现
* */
public static int binarySearch(int[] arrays, int des) {
int low = 0;
int high = arrays.length - 1;
while (low <= high) {
int middle = low + (high - low) / 2;
if (des == arrays[middle]) {
return middle;
} else if (des > arrays[middle]) {
low = middle + 1;
} else if (des < arrays[middle]) {
high = middle - 1;
}
}
return -1;
}
}