2015-09-17 55 views

回答

0

這是可以做到一樣的,你會做二進制搜索排序的陣列上無旋轉,通過應用變換,當你看一個測試值的索引:

testIndex = (searchIndex + minIndex) % arrayLength; 

哪裏searchIndex是索引如果數組不旋轉,minIndex是數組旋轉的偏移量,而testIndex是用於從旋轉數組中查找值的索引。

所以在你的例子:

input array: [3,4,5,6,1,2] 
minIndex: 4 
first searchIndex: floor((arrayLength-1)/2) = 2 
first testIndex: (4+2)%6 = 0 
+0

嗨starchild,在這種情況下,如何應對低和高的指針?在正常的二元搜索中,如果nums [mid] target,hi = mid-1並且lo <= hi。謝謝! – RdouTyping

+0

您仍然可以像在普通二分查找中那樣設置'mid','low'和'high'。只有在實際查找數組中的測試值以進行值比較時,才能轉換索引。 – starchild

相關問題