public class Test {
public static void main(String[] args) {
int[] intArr = { 1, 1, 1, 7, 7, 10, 11, 12, 13, 14, 54, 54, 66, 90,
267, 345, 456, 789, 45654 };
System.out.println(binarySearch(intArr, 0, intArr.length - 1, 14));
}
public static boolean binarySearch(int[] arr, int start, int end, int target) {
if (start >= arr.length || end < 0<span style="font-family: Arial, Helvetica, sans-serif;">)</span>
return false;
int index = (start + end) / 2;
if (arr[index] < target) { // 右边
return binarySearch(arr, index + 1, end, target);
} else if (arr[index] > target) { // 左边
return binarySearch(arr, 0, index - 1, target);
} else {
return true;
}
}
}
总结:(1)折半查找需要数据已经排好了序了。
(2)在写过程中,遇到了栈溢出,原因很简单,递归的时候,条件写的不好。就很容易循环了,所以写递归的时候需要非常的仔细,判断跳出递归的条件
是否全都考虑到了。
(3)折半查找还可以使用非递归的方式。