關於binarySearch返回值為負數
額。。。說過的要更新blog呢。。。
蛋疼的暑假,馬上大四了,結果學校組織我們參加了2個月的實訓。弱弱的說一句,別人都開學了,我還沒放學。
今天遇到了一個以前沒遇到過的問題,我就不用我拙計的語文水平描述了,請看程式碼:
import java.util.*; public class Test { public static void main(String[] args) { String[] colors ={"blue","red","green","yellow","orange"}; Arrays.sort(colors); int num1 = Arrays.binarySearch(colors, "green"); int num2 = Arrays.binarySearch(colors, "gray"); System.out.println(num1+" "+num2); } }
輸出結果是:1 -2
“1” : 排序後,字串“green”的下標。
我腦袋裡產生一個大大的問號“?”
這個-2是怎麼產生的?
API如是說:
- 引數:
a
- 要搜尋的陣列key
- 要搜尋的值- 返回:
- 如果它包含在陣列中,則返回搜尋鍵的索引;否則返回 (-(插入點) - 1)。 插入點 被定義為將鍵插入陣列的那一點:即第一個大於此鍵的元素索引,如果陣列中的所有元素都小於指定的鍵,則為 a.length。注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。
- 對此不是很理解,所以記錄下來。