java 用二分法(递归)实现查找指定元素

用二分法查找在数组a[]中指定的元素key
public class BinarySearch {
public static void main(String[] args) {
int[] a = { 2, 4, 8, 26, 36, 49 };
bS(a, 0, a.length - 1, 33);
}
/**
 * 
 * @param a 要在哪个数组里面查找
 * @param low 从哪个位置开始查找  low 和 hig 表示的是待查找区间
 * @param hig 截至到哪个位置
 * @param key 待查找的值
 */
public static void bS(int[] a, int low, int hig, int key) {

int mid = (low + hig) / 2;
// 二分法的要求是数组一开始就是排序好的   
if (low > hig) {//说明两个下标往中间走 相互错过了,就表示没有找到这个key
System.out.println("没有这个数");
return;//直接return一下,为了不报StackOverflowError
}
if (a[mid] == key) {//要是找到直接打印即可
System.out.println("找到下标为" + mid);
return;
} else if (a[mid] < key) {//表示待查找的key在数组的右边,中间的mid对象的元素的值肯定不等于key
bS(a, mid + 1, hig, key);
} else {//表示待查找的key在数组的左边,中间的mid对象的元素的值肯定不等于key
bS(a, low, mid - 1, key);
}
}
}

你可能感兴趣的:(java随身)