二分查詢的實現(僅對於有序陣列

2021-10-21 09:53:27 字數 562 閱讀 7977

有一串有序陣列,想從其中找到數字k對應元素的下標

int

main()

;int k =0;

scanf

("%d"

,&k)

;//輸入想要查詢的數字

int sz =

sizeof

(arr)

/sizeof

(arr[0]

);//計算陣列長度

int left =0;

int right = sz -1;

while

(left <= right)

//注意此處left可以等於right

else

if(arr[mid]

< k)

else}if

(left > right)

return0;

}

注意:

計算兩個數平均值時,盡量避免使用(a+b)/2,因為a+b的值可能超出編譯器中整形的最大值導致計算錯誤,故可用(大數字-小數字)/2+小數字計算。

二分查詢有序陣列

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

有序陣列的二分查詢

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

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

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