各類二分查詢C 實現

2021-10-05 19:39:40 字數 1188 閱讀 7865

// 二分查詢,找到該值在陣列中的下標,否則為-1

static

intbinaryserach

(vector<

int> array,

int key)

else

if(array[mid]

< key)

else

}return-1

;}

// 查詢第乙個與key相等的元素

static

intfindfirstequal

(vector<

int> array,

int key)

else}if

(left < array.

size()

&& array[left]

== key)

return-1

;}

// 查詢最後乙個與key相等的元素

static

intfindlastequal

(vector<

int> array,

int key)

else}if

(right >=

0&& array[right]

== key)

return-1

;}

// 查詢第乙個大於key的元素

static

intfindfirstlarger

(vector<

int> array,

int key)

else}if

(left < array.

size()

)return-1

;}

// 查詢最後乙個小於key的元素

static

intfindlastsmaller

(vector<

int> array,

int key)

else}if

(right >=0)

return-1

;}

二分查詢的變種需要考慮兩個問題:

if 語句的判斷符號返回 left 還是 right

c 實現二分查詢

二分查詢又稱折半查詢,對排好序的陣列,每次取這個數和陣列中間的數進行比較,複雜度是 o logn 如 設陣列為 a n 查詢的數x,如果x a n 2 則返回 n 2 如果 x a n 2 則在 a 0 到a n 2 1 中進行查詢 如果x a n 2 則在a n 2 1 到a n 1 中進行查詢 ...

c 實現二分查詢

二分查詢又稱折半查詢,對排好序的陣列,每次取這個數和陣列中間的數進行比較,時間複雜度是o logn 設陣列為a n 查詢的數x,如果x a n 2 則返回n 2 如果x a n 2 則在a 0 到a n 2 1 中進行查詢 如果x a n 2 則在a n 2 1 到a n 1 中進行查詢 優點是比較...

C 實現二分查詢

所謂的二分查詢,在一組遵循一定規律的數中查詢自己想要的數,這裡以一組從小到大排好的陣列為例進行二分查詢,二分思想如下 假設你要找 n 那麼先讓 n 與陣列中間的數比較,縮小一半區間,如果 n 比中間的數大,那麼以後半部分作為新的查詢區間,讓 n 與新區間的中間數比較,再根據大小重新縮小一半的區間,直...