二分查找法,顾名思义,就是一直除以2,找中间部分,例如:1024中的任何一个数都能在10次内准确的猜出来。那么我们查找内容也可以使用二分法快速查找,其实很多时候找bug用的就是这种方法。
代码语言:javascript复制package Action;
public class test {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5, 6 };
System.out.println(search(arr, 2, 0, arr.length - 1));
System.out.println(search(arr, 5, 0, arr.length - 1));
}
/**
* @search 返回被查找的数的位置下标
* @param arr 查找的数组
* @param n 是要查找的数
* @param begin 低位
* @param end 高位
* @return
*/
public static int search(int[] arr, int n, int begin, int end) {
int mid = (begin end) / 2;//(开始坐标 结束坐标)/2,找中点
if (n < arr[begin] || n > arr[end] || arr[begin] > arr[end]) {
return -1;// 结束
}
System.out.println("begin:" begin "——end:" end "——center:" mid);
if (arr[mid] < n) {
return search(arr, n, mid 1, end);
} else if (arr[mid] > n) {
return search(arr, n, begin, mid - 1);
} else {
return mid;
}
}
}
执行效果:
begin:0——end:5——center:2 begin:0——end:1——center:0 begin:1——end:1——center:1 1 begin:0——end:5——center:2 begin:3——end:5——center:4 4
可以看到,最终要找的2和5就是在下标的1和4处,而且计算速度也是比较快的。
这个比较好理解,希望能对大家有点帮助。