二分查找

一,二分查找

二分查找法作爲一種常見的查找方法,將原本是線性時間提升到了對數時間範圍,大大縮短了搜索時間,但它有一個前提,就是必須在有序數據中進行查找。

時間複雜度: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;
}

其中,有幾個要注意的點:

  1. 循環的判定條件是:low <= high
  2. 爲了防止數值溢出,mid = low + (high - low)/2
  3. 當 A[mid]不等於target時,high = mid - 1low = mid + 1

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章