Administrator
发布于 2022-05-16 / 5 阅读
0
0

记一个二分查找

被查找的数组必须是有序。


public class HelloWorld{
    public static void main(String[] args){
        //被查找数组,必须是有序
        int[] arr = {1,3,5,7,9,11,13,14};
        //被查找目标
        int target = 14;
        
        //定义左、右、中间下标
        int start = 0;
        int end = arr.length - 1;
        int mid;
        
        //循环结束条件:左下标 小于等于 右下标。
        while(start <= end){
            mid = (start + end) / 2;    //初始化中间下标
            
            //如果中间元素和目标相同,直接return。否则继续判断
            if(target == arr[mid])
            {
                System.out.println("ok, target = " + mid);
                return;
            }
            else if(target > arr[mid])
            {
                //如果目标大于中间值,说明目标在中间值的右边。
                //把左下标改到中间下标的后一位。
                start = mid+1;
            }
            else
            {
                //如果不符合上面,目标就一定小于中间值。
                //把右下标改为中间下标的前一位
                end = mid-1;
            }            
        }
        //若程序执行到这里,说明没找到。
        System.out.println("NO");
    }
}


评论