【算法】 入门 力扣 704 二分查找

总归是要练习的 总归不能二分查找都不会吧 你看 一练 不会 写了 一天才写完 僵硬

笨逼


~~~    <script>
        // 算法入门 
        // 一直以来 前端接触的算法比较稍 终于才发现了 力扣 这个网站 感觉其实挺好的  

        // 力扣704  二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,
        // 写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
        // 作为一个前端小朋友一看 就是indexOf   easy 网上看了下 确实indexOf的性能是比较差一点的
        // 而二分查找本来就是提交性能  就是从每一个找 变为一般一半的找  
        // 先取 数据源中的nums中间位,比较target目标值 如果想等 只找一次就找见了 如果不相等 考虑target比数组源
        // 中间位大,那么我们就重新定义中间位是中间位加一和末尾之间重新定义的中间位 不断缩小范围  直至找到某一位
        // 等于目标数据源,反馈当前中间位就是当前值在数据源中的索引  如果找不到则返回 -1  



        //上代码

        /**
         * @params { Numbers[] }  数字组成的数组
         * @params { number }     一个数字
         * @return {number}       返回数字number在在Numbers[] 的索引  如果没有 返回 -1
        */

        var search = function (numArray,targetNum) { // numArray -- 数字数组   targetNum -- 目标数字
            let left = 0 ; //设置默认左边初试值位0  因为索引下表是从0开始 
            let right = numArray.length - 1 ; //默认默认右边值位数组长度  其实就是他最大的下标
            debugger
            while(left <= right){   //防止卡死
            let middle = parseInt( (right + left) / 2 )  //中位数   开始这句话写错了 看了 好久 擦  中位数是啥东西
                if(numArray[middle] == targetNum){  //相等就是找见了  直接return'出来
                    return middle
                }else if(numArray[middle] < targetNum){     //这句话也写错过   擦   如果当前中位数  比目标值小  更新左边下表位middle +1
                    left = middle + 1
                }else{
                    right = middle - 1    // 同理  右边更新为middle - 1  呵呵 也写错了  
                }
            }
            return -1
        }

        //测试   用例
       let a =  search ([-1,0,3,5,9,12], 9 )
       console.log(a)
       //平平无奇的小猪才  写了一个小时 
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值