二分法查找代码实现

代码实现如下:

package com.liu.pro;

public class binarySearch {
    public static void main(String[] args) {
//      测试数组
        int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        System.out.println(binarySearch(arr, 0, arr.length - 1, 1));
    }

    public static int binarySearch(int[] arr, int left, int right, int val) {
//      定义中间值的索引
        int mid = (left + right) / 2;
//      定义一个中间值,作为比较标准
        int midVal = arr[mid];
//      如果满足left>right,则说明没有找到,返回-1
        if (left > right) {
            return -1;
        }
//      与中间的数进行比较,比较一共有三种情况
//      相等,则直接返回mid坐标
        if (midVal == val) {
            return mid;
//      midVal>val,要找的值比中间值还要小,则向左递归
        } else if (midVal > val) {
            return binarySearch(arr, left, mid - 1, val);
//      midVal>val,要找的值比中间值还要小,则向左递归
        } else {
            return binarySearch(arr, mid + 1, right, val);
        }
    }
}

测试结果:

 

posted @ 2022-07-16 18:58  努力学习の小白  阅读(43)  评论(0编辑  收藏  举报
Live2D