二分查找

别来无恙 提交于 2020-03-31 08:44:09

非递归方法

//二分查找法,在有序的数组中,查找target
//如果找到了target,返回相应的索引index
template<typename T>
int binarySearch(T arr[],int n,T target){
    int l=0,r=n-1;
    while (l<=r)
    {
        // int mid = (l+r)/2;
        int mid = l +(r-l)/2; //避免溢出的问题
        if(arr[mid] == target)
            return mid;
        
        //在arr[l...mid-1]之中查找target
        if(target<arr[mid])
            r=mid-1;
        else
            l=mid+1;
    }
    return -1;
    
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!