二分查找

1、思想:找中间的数,变换左右边界值

2、编程要点:设置 l<=r 作为作为循环判断标志

3、代码

import java.util.*;
 
/**
 * 1、找到
 * 2、没找到
 */
public class Main {
 
    public static void main(String[] args) {
        int[] arr = new int[]{1, 4, 7, 9, 12, 15, 17, 25, 33};
        int target = 1;
        System.out.println(bsearch( arr, target));
    }
 
    private static boolean bsearch(int[] arr, int target) {
        int l = 0;
        int r = arr.length - 1;
        int m =0;
        boolean found = false;
        while (l <= r){
            m = (l + r) / 2;
            if (arr[m] == target){
                System.out.println(m);
                return found = true;
            }else {
                if (arr[m] > target){
                    r = m - 1;
                }else {
                    l = m + 1;
                }
            }
        }
        return false;
 
    }
}

 

posted @ 2018-12-20 14:54  布尔bl  阅读(108)  评论(0编辑  收藏  举报