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)
    
  • 相关阅读:
    POJ--2356 Find a multiple
    Trailing Zeroes (III)
    第一章 快速入门
    第二章 变量和基本类型
    第三章 标准库类型
    第四章 数组和指针
    第五章 表达式
    第六章 语句
    第七章 函数
    第八章 标准IO库
  • 原文地址:https://www.cnblogs.com/fazero/p/13783533.html
Copyright © 2011-2022 走看看