當前位置:編程學習大全網 - 網站源碼 - java問題 如圖,Collections.binarySearch 集合中元素不存在的時候為什麽會返回-6,求大神解釋

java問題 如圖,Collections.binarySearch 集合中元素不存在的時候為什麽會返回-6,求大神解釋

我剛閱讀了壹下該方法的源碼

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

  • 上一篇:vc socket編程,基於UDP協議,服務器總是卡死未響應,想創建多線程,AfxBeginThread怎麽用?
  • 下一篇:c#ARCGIS二次開發的問題
  • copyright 2024編程學習大全網