zoukankan      html  css  js  c++  java
  • 二分查找模板js

    二分查找模板

    // 标准二分查找,使用数组能找到的情况,最后left和right不一样,差1
    function find(arr, num) {
        let l = 0, r = arr.length - 1;
        while (l <= r) {
            let mid = l + Math.floor((r - l) / 2)
            if (arr[mid] === num) {
                return num
            } else if (arr[mid] > num) {
                r = mid - 1
            } else {
                l = mid + 1
            }
        }
        console.log(l, r);
        return '没找到'
    }
    find([1,2,3,4,5],3)
    find([1,2,4,5],3)
    
    // 适合查找大于等于target的第一个值,最后left和right相等
    function find(arr, num) {
        let l = 0, r = arr.length - 1;
        while (l < r) {
            let mid = Math.floor((r + l) / 2)
            if (arr[mid] === num) {
                return num
            } else if (arr[mid] > num) {
                r = mid
            } else {
                l = mid + 1
            }
        }
        console.log(l, r);
        return arr[l]
    }
    find([1,2,5,6,7],3)
    find([1,2,3,4,5],3)
    find([1,2,4,5],3)
    
    // 适合查找小于等于target的第一个值,最后left和right相等
    function find(arr, num) {
        let l = 0, r = arr.length - 1;
        while (l < r) {
            let mid = Math.floor((r + l) / 2) + 1
            if (arr[mid] === num) {
                return num
            } else if (arr[mid] > num) {
                r = mid - 1
            } else {
                l = mid
            }
        }
        console.log(l, r);
        return arr[l]
    }
    find([1,2,3,4,5],3)
    find([1,2,4,5],3)
    
  • 相关阅读:
    前端基础 — BOM和DOM
    JavaScript概述
    前端知识 — HTML内容、CSS基础
    数据库MySQL
    jquery ajax() 方法使用
    移动端自适应的问题及解决
    jquery appendTo 和 append 的用法
    css 截取文字
    电脑模拟手机工具
    jquery 旋转插件jqueryrotate
  • 原文地址:https://www.cnblogs.com/fazero/p/13783533.html
Copyright © 2011-2022 走看看