美文网首页
二分查找

二分查找

作者: jluemmmm | 来源:发表于2020-08-17 20:40 被阅读0次

    递归实现

    var arr = [1, 2, 4, 5, 6, 7, 39]
    
    function binSearch(start, end, arr, target) {
      let mid = Math.floor((end - start) / 2 )+ start
      if (start > end ) return - 1
      console.log(start, end, mid)
      if (arr[mid] === target) {
        return mid
      } else if (arr[mid] < target) {
        return binSearch(mid + 1, end, arr, target)
      } else {
        return binSearch(start, mid - 1, arr, target) 
      }
      return -1
    }
    

    非递归实现

    var arr = [1, 2, 4, 5, 6, 7, 39]
    
    function binSearch(arr, target) {
      let start = 0
      let end = arr.length
      while(start <= end) {
        let mid = Math.floor((end - start) / 2)+ start
        if (arr[mid] === target) {
          return mid
        } else if (arr[mid] < target) {
          start = mid + 1
        } else {
          end = mid - 1
        }
      }
    }
    
    binSearch(arr, 6)
    

    为什么这么简单的题都答不出来。。

    相关文章

      网友评论

          本文标题:二分查找

          本文链接:https://www.haomeiwen.com/subject/jpztjktx.html