import java.util.*;
public class BinarySearch {
public static void main(String[] args) {
int[] data = {0,1,2,3};
int key = 1;
int[] num = {0};
search(data, 0, data.length - 1, key ,num);
System.out.println(key + " is in data[" + num[0] + "]");
}
static void search(int[] data, int i, int j, int key, int[] num) {
// int centre = (j - i + 1) / 2;
// if (centre > 0) {
// if (data[centre] > key) {
// search(data, i, centre - 1, key, num);
// }
// else if(data[centre] < key) {
// search(data,centre + 1, j, key, num);
// }
// else if(data[centre] == key) {
// num = centre;
// }
// }
int centre = (j - i + 1) / 2;
int[] left = Arrays.copyOfRange(data, i, centre + 1);
int[] right = Arrays.copyOfRange(data, centre + 1, j + 1);
if (centre > 0) {
if (left[left.length - 1] < key)
search(right, i, right.length - 1, key, num);
else if (left[left.length - 1] > key)
search(left, i, left.length - 1, key,num);
else if (left.length - 1 == key)
num[0] = left.length - 1;
else
num[0] = -1;
}
}
}
不会啊。。。这个递归不会写了,没办法返回 查找值 在数组中的位置。。