二分查詢搜尋區域性有序陣列

2021-10-19 07:45:45 字數 769 閱讀 6909

公升序排列的整數陣列 nums 在預先未知的某個點上進行了旋轉(例如, [0,1,2,4,5,6,7] 經旋轉後可能變為 [4,5,6,7,0,1,2] )。

請你在陣列中搜尋 target ,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。

示例 1:

輸入:nums = [4,5,6,7,0,1,2], target = 0

輸出:4

示例 2:

輸入:nums = [4,5,6,7,0,1,2], target = 3

輸出:-1

示例 3:

輸入:nums = [1], target = 0

輸出:-1

模式識別:有序,或者區域性部分有序,基本可以考慮使用二分法

演算法描述:「丟棄」一半的資料

假如:nums = [4,5,6,7,0,1,2],則為情況1;

nums = [6,7,0,1,2,4,5],則為情況2;

class

solution

if(n ==1)

//上面是極端情況下的判斷

int left =

0, right = n -1;

while

(left <= right)

//下面不進行mid判斷

if(nums[0]

<= nums[mid]

)else

}else

else}}

return-1;}}

二分查詢有序陣列

對於乙個有序字串陣列,用二分法查詢某一字串是否存在於該字串陣列中。函式原型為 bool binarysearch const vector array,const string target 注意這裡的有序指的是字典序,如字串陣列 a,ab,ac,bc,cd,d 就是有序字串陣列,而 a,b,ab ...

二分查詢(基於有序陣列)

採用一對平行的陣列,乙個儲存鍵乙個儲存值 實現的核心是rank 方法,它返回表中小於給定鍵的鍵的數量。二分查詢法 將被查詢的鍵和子陣列的中間鍵比較。如果被查詢的鍵小於中間鍵,就在左子陣列中繼續查詢,如果大於就在右子陣列中繼續查詢,否則中間鍵就是我們要找的鍵。實現 rank 採用了二分查詢法,rank...

有序陣列的二分查詢

給出乙個有序陣列 公升序 以及指定的數值。返回指定數值在陣列中的下標 若不存在則返回 1 在傳入的公升序陣列arr中查詢是否有元素值與給定的number相等。param arr 有序陣列 公升序 param number 指定的數值 return 指定數值在該陣列中的下標值。返回 1表示不存在 st...