用二分法查找出滿足條件值的最大下標(滿足條件的值有多個)

先理清思路:如果查詢的值,有多個相同的時候,首先用二分法查出其中的一個,並將此值的索引值賦給一個臨時變量(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;
    }

}

這樣便可以查找出來了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章