二分法(在有序数组里,是否存在某个数)

在有序数组里,是否存在某个数

package practice01;

import java.util.Arrays;
//二分法(在有序数组里,是否存在某个数)
public class demo04 {
    public static boolean existNum(int[] sortedArr,int num){
        if (sortedArr.length==0||sortedArr==null){
            return false;
        }
        int l=0;    //左索引
        int r=sortedArr.length-1;    //右索引
        int mid=0;   //中点
        while (l<r){  //l~r至少有两个数时
            mid=((r-l)>>1)+l;  //(r+l)/2
            if (sortedArr[mid]==num){
                return true;
            }if (sortedArr[mid]>num){
                r=mid-1;
            }else {
                l=mid+1;
            }
        }
        return sortedArr[l]==num;  //当r=l剩下最后一个数的时候
    }

    public static void main(String[] args) {
        int[] sortedArr={1,2,2,2,3,4,4};
        boolean b = existNum(sortedArr, 5);
        System.out.println(b);
    }

}

 

上一篇:【备战蓝桥-基础篇】—1.1切面条


下一篇:【Golang】已知有个排序好(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序