码迷,mamicode.com
首页 > 其他好文 > 详细

二分查找

时间:2018-02-22 19:42:08      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:c++   inf   end   时间复杂度   pen   col   src   span   tar   

//C语言 
int binarySearch(int *arr,int len,int key) {
    if(arr == NULL || len <= 0)
    return -1;
    int start = 0;
    int end = len - 1;
    int mid = 0;
    while(start < end) {
        if(arr[start] == key)
        return start;
        if(arr[end] == key)
        return end;
        mid = start + (end - start) / 2;
        if(arr[mid] == key)
        return mid;
        else if(arr[mid] < key)
        start = mid+1;//必须+1,否则死循环 
        else
        end = mid-1;//必须-1,否则死循环 
    }
    return -1;
}

 

//C++
const
size_t arraySize = 10; template<typename T> int binarySearch(const array<T, arraySize> &arr, const T &key) { int mid = 0; int low = 0; int high = arraySize - 1; while (low < high) { mid = low + (high - low); if (arr[low] == key) return low; if (arr[high] == key) return high; if (arr[mid] == key) return mid; if (arr[mid] < key) low = mid + 1; else high = mid - 1; } return -1; }

时间复杂度:O(log2N)

证明:

技术分享图片

二分查找

标签:c++   inf   end   时间复杂度   pen   col   src   span   tar   

原文地址:https://www.cnblogs.com/afreeman/p/8459313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!