一,二分查找
二分查找法作爲一種常見的查找方法,將原本是線性時間提升到了對數時間範圍,大大縮短了搜索時間,但它有一個前提,就是必須在有序數據中進行查找。
時間複雜度:O(lon2(n))
二,最基本的二分查找
int binarySearch(int* A, int target, int n){
int low = 0, high = n, mid;
while(low <= high){
mid = low + (high - low) / 2;
if(A[mid] == target){
return mid;
}else if(target < A[mid]){
high = mid - 1;
}else{
low = mid + 1;
}
}
return -1;
}
其中,有幾個要注意的點:
- 循環的判定條件是:
low <= high
- 爲了防止數值溢出,
mid = low + (high - low)/2
- 當
A[mid]
不等於target
時,high = mid - 1
或low = mid + 1