用二分法查找出满足条件值的最大下标(满足条件的值有多个)

先理清思路:如果查询的值,有多个相同的时候,首先用二分法查出其中的一个,并将此值的索引值赋给一个临时变量(temp),然后在将查出来的数的索引值加一,继续向右查询下一个值的索引值,如果索引值存在的话,则再将查询出来的值,赋给temp,一直循环,直至最后,将temp输出;如果索引值不存在的话,则将上一个的temp输出。

下面看代码:

public class BinarySearch{
    public static void main(String  args[]){
        binary();
}

    public static int binary(int target){
        int array[]={
   
   3,5,6,8,12,19,26,35,35,35,35,54,65};
        int temp = -1;
        int left = 0;
        int right=array.length;

        while(left<=right){
            int mid = (left + right)/2;

            if(array[mid] <= target){  //如果中间值比目标值小,说明目标值在右边,则将mid + 1 赋给left
                left = mid + 1;
                if(array[mid] == target){
                    temp = mid;  //将查出来的索引值赋给temp
                }
            }
            else{
                right = mid -1;  //如果中间值比目标值大,证明目标值在左边,则将其减一赋给right
            }

        }
        System.out.println("最大下标为:" + temp);
        return temp;
    }

}

这样便可以查找出来了。

猜你喜欢

转载自blog.csdn.net/qq_39650208/article/details/77933409
今日推荐