Java之二分查找算法

时间:2022-02-06 10:56:16

算法说明:取中间位置的值与待查字比较。如果比待查字更大,则去列表的前半部分查找,如果比待查字小,则去列表的后半部分查找,直到找到这个待查字,或者返回没有找到这个待查字。其中给定的列表是从大到小排列的有序表

// 二分查找算法,待查的有序数组、待查的数字
    public static int biSearch(int []array,int a) {
        int lo = 0; // 左边下标
        int hi = array.length - 1;
        int mid;
        
        while(lo<=hi) {
            mid = (lo + hi)/2; // 中间位置
            if(array[mid] == a) {
                return mid + 1; // 返回第多少个值是这次需要查找的值
            }else if(array[mid]<a) { // 向右查找
                lo = mid + 1;
            }else {
                hi = mid - 1; // 向左查找
            }
        }
        return -1;
    }