Binary search 是一種在有序陣列做搜尋的演算法,在最壞的狀況下,其時間複雜度為 O (log n)
對數時間,相當高效。
Binary search 框架
以下是 binary search 的框架,但只適用於有序且不含重複元素的 Array :
int bsearch(vector<int>& a, int value) {
int low = 0;
int high = a.size()-1;
while (low <= high) {
int mid = low + ((high-low)>>1);
if (a[mid] == value) {
return mid;
} else if (a[mid] < value) {
low = mid + 1;
} else if (a[mid] > value) {
high = mid - 1;
}
}
return -1;
}