1. 程式人生 > >用二分法查找出滿足條件值的最大下標(滿足條件的值有多個)

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

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

這樣便可以查找出來了。