在一个有序数列中找到第一个比x大的数的位置

/ C++ / 没有评论 / 1482浏览

在一个有序数组中找到第一个比X大的数的位置

利用二分查找

int find_first_larger_than_k(int *list,int len,int k)
{
    if(list == nullptr || len <=0 || list[len-1] <= k)
    {
        return -1;
    }

    int left = 0;
    int right = len - 1;
    int res = len - 1;
    while(left < right)
    {
        int mid = (left + right)/2;
        if(list[mid] > k)
        {
            right = mid -1;
            res = mid;
        } else{
            left = mid + 1;
        }
    }

    return res;
}