题解 | #二分查找-I#javascript的解法

二分查找-I

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

数组中间的元素开始比较,如果中间的元素正好等于目标值,则搜索结束;如果目标值大于或小于中间的元素,则在大于或小于中间的元素的那一半继续搜索,然后重复进行比较,直到最后找到他

第一步: 定义查找的范围 [left,right],初始查找范围是整个数组。
第二步:每次取查找范围的中点 mid,比较 nums[mid] 和 target的大小,如果相等则 mid即为要寻找的下标。
第三步: 如果不相等则根据 nums[mid]和 target的大小关系将查找范围缩小一半
第四步:继续从第一步开始重复执行

var search = function(nums, target) {
    // 在区间[left,right]中查找元素,左闭右闭
    let left = 0;
    let right = nums.length - 1;
    while (left <= right) {
      // 计算中间点
      let mid = parseInt(left + (right-left)/2);
      if (target == nums[mid]) {
        return mid;
        // 如果target < nums[mid],表示目标值可能在左半边
      } else if (target < nums[mid]){
        right = mid - 1;
        // 如果target > nums[mid],表示目标值可能在右半边
      } else if (target > nums[mid]){
        left = mid + 1;
      }
    }
    // 未找到返回-1
    return -1;
};
#算法题#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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