// 二分查詢,找到該值在陣列中的下標,否則為-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 與新區間的中間數比較,再根據大小重新縮小一半的區間,直...