2016-08-06 26 views
3

作爲每Java文檔Arrays.binarySearch(INT []一,INT鍵)的Java陣列的binarySearch()插入點

返回:

的搜索鍵的索引,如果它被包含在陣列;否則,( - (插入點)-1)。插入點被定義爲鍵將被插入到數組中的點: 大於鍵的第一個元素,或者如果數組中的所有元素 小於指定的鍵,則爲a.length。請注意,當且僅當找到密鑰 時,此 可確保返回值> = 0。

我需要了解爲什麼它返回(-(insertion point) - 1),爲什麼不只是-(insertion point)

回答

14

因爲如果它返回-(insertion point),並且插入點爲0,那麼你就無法我發現它加以區分,這是在索引0我還沒有找到它,你可以在插入索引0

3

考慮一個數組:

int intArr[] = {5,12,20,30,55}; 

現在考慮這兩個二進制搜索語句:

System.out.println("The index of element 5 is : " + Arrays.binarySearch(intArr,5)); 

System.out.println("The index of element 4 is : " + Arrays.binarySearch(intArr,4)); 

輸出

The index of element 5 is : 0 
The index of element 4 is : -1 

因爲那-1,我們可以區分兩個輸出。如果沒有-1那麼這兩個語句都會給出相同的輸出,即0