用二分法查找出滿足條件值的最大下標(滿足條件的值有多個)
阿新 • • 發佈:2019-01-28
先理清思路:如果查詢的值,有多個相同的時候,首先用二分法查出其中的一個,並將此值的索引值賦給一個臨時變數(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;
}
}
這樣便可以查找出來了。