二分法(在有序数组里,找满足>=value的最左位置)

在有序数组里,找满足>=value的最左位置

package practice01;

//二分法(在有序数组里,找满足>=value的最左位置)
public class demo05 {
    public static int nearestIndex(int[] sortedArr,int num){
        if (sortedArr.length==0||sortedArr==null){
            return 0;
        }
        int l=0;    //左索引
        int r=sortedArr.length-1;    //右索引
        int index=0;  //声明并初始化
        int mid=0;
        while (l<r){  //l~r至少有两个数时
            mid=((r-l)>>1)+l;  //(r+l)/2
            if (sortedArr[mid]>=num){
                index=mid;
                r=mid-1;
            }else {
                l=mid+1;
            }
        }
        return index;  //返回索引位置
    }

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

}

 

posted @ 2022-02-07 17:40  狂忍日记  阅读(52)  评论(0)    收藏  举报