我剛閱讀了壹下該方法的源碼
public static <T>int binarySearch(List<? extends Comparable<? super T>> list, T key)
它是壹個二分查找算法,前提是數組升序排列,
所以就是為什麽是-6的原因。
我這裏用文字描述下妳代碼的邏輯
1、有序數組[9,54,72,75,852]中使用二分查找查詢999
2、該數據長度小於5000,則走indexedBinarySearch(根據索引的二分查找法)方法
3、首先取索引中位數,[9,54,72,75,852]數組中位數為0+4/2=2?
這裏索引中位數也就是2,然後取出值,與999進行判斷,72<999,則low(低位數)變成mid+1,也就意味著999壹定是出現在中位數的右邊,所以現在查找數組範圍[75,852],然後取中位數,3+4/2=3,然後75<999,然後又確定數據不在索引<=3,那麽Low變成4,然後4+4/2=4
中位數變成4,然後852<999,這裏就意味著所有數據都匹配過了,然後還沒有low變成5,現在low<=high ,5<=4這個條件已經無法滿足了循環條件了,所以返回-(low+1)=-6