在9.3節工作賓利將修改過的二進制搜索。在9.3編程珠璣:列9.3二進制搜索 - 範圍初始化
if (arr[mid] < key) low = mid+1
else if (arr[mid] > key) high = mid-1
else return mid;
顯示
典型實施的簡要剪斷和更好的方法用不同的不變量改性/有效的比較..
if (arr[mid] < key) low = m;
else high = m;
和環形外還有一個檢查,如果索引中的密鑰「高」。在修改的二進制搜索左索引「低」開始於-1(而不是0)和「高」指數以n(而不是n-1)開始..和循環運行
while (low + 1 != high)
該修改即使設置low = 0和high = n-1,搜索似乎也能正常工作。
但我寧願不要在他的代碼中猜想賓特賓利。那麼,爲什麼他設置爲-1和高到n?有沒有什麼特殊情況只有這樣才能起作用?
0或1個元素的數組 – AndyG
謝謝。如果你讓它成爲答案,我會接受。 – Manohar
它完成了。我只處理空數組的情況。隨意探索我的方法之後的一個元素案例。 – AndyG