Java递归基础案例-二分查找法

2022-11-29 19:59:48 浏览数 (1)

二分查找法,顾名思义,就是一直除以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处,而且计算速度也是比较快的。

这个比较好理解,希望能对大家有点帮助。

0 人点赞