二分查找法

template<typename T>
int binarySearch(T arr[], int n, T target) {
    int l = 0, r = n - 1; // 在arr[l...r]之中查找target
    while (l <= r) {
        //int mid = (l + r) / 2; // 有bug,可能會產(chǎn)生溢出
        int mid = l + (r - l) / 2; // 無bug
        if (arr[mid] == target)
            return mid;
        if (target < arr[mid]) // 在arr[l...mid-1]之中查找target
            r = mid - 1;
        else // target > arr[mid]
            l = mid + 1;    // 在arr[mid+1...r]之中查找target
    }
    return -1;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容