题解 | 二分查找-I

二分查找-I

https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @param target int整型 
 * @return int整型
 */
int search(int* nums, int numsLen, int target ) {
    // write code here
    int left, right, middle;
    left = 0; right = numsLen;
    while(left <= right){
        middle = (left + right) / 2;
        if (nums[middle] == target)
            return middle;
        else if (nums[middle] > target){
            right = middle - 1;
        }else {
            left = middle + 1;
        }
    }
    return -1;
}

去数组中间的值为mid。

如果mid>target,那么target肯定在左半边,所以需要调整右侧边界,right=mid-1

如果mid<target,那么target肯定在右半边,所以需要调整左侧边界,left=mid+1

不断逼近,最终找到或者找不到。

全部评论

相关推荐

03-29 18:59
运城学院 Java
程序员小白条:咱们要对自己的简历和学历有清晰的认知,不要动不动就大厂了....都26届了,没实习还想着大厂,唉
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务