zoukankan      html  css  js  c++  java
  • js实现二分搜索法

    二分搜索法:

      也称折半搜索,是一种在有序数组中查找特定元素的搜索算法。

    实现步骤:

      1. 首先从数组中间开始查找对比,若相等则找到,直接返回中间元素的索引。

      2. 若查找值小于中间值,则在小于中间值的那一部分执行步骤1的操作。

      3. 若查找值大于中间值,则在大于中间值的那一部分执行步骤1的操作。

      4. 否则,返回结果为查不到,返回-1。

    方法一:

        function binary_search1(arr, key) {
            var low = 0;
            var high = arr.length - 1;
    
            while (low <= high) {
                var mid = parseInt((low + high) / 2);
    
                if (key === arr[mid]) {
                    return mid;
                }
                else if (key < arr[mid]) {
                    high = mid + 1;
                }
                else if (key > arr[mid]) {
                    low = mid - 1;
                }
                else {
                    return -1;
                }
            }
        }

      var arr = [1,2,3,4,5,6,7,8];
      console.log(binary_search1(arr, 3));

    方法二:

        function binary_search2 (arr, low, high, key) {
            if (low > high) {
                return -1;
            }
    
            var mid = parseInt((low + high) / 2);
    
            if (key === arr[mid]) {
                return mid;
            }
            else if (key < arr[mid]) {
                high = mid - 1;
                return binary_search2(arr, low, high, key);
            }
            else if (key > arr[mid]) {
                low = mid + 1;
                return binary_search2(arr, low, high, key);
    
            }
        }

      

       var arr = [1,2,3,4,5,6,7,8];
       console.log(binary_search2(arr, 0, 7, 3));

  • 相关阅读:
    NOI2013 树的计数
    拆系数FFT学习笔记
    HAOI2017 八纵八横——线段树分治+线性基
    BJOI2018链上二次求和——线段树
    [bzoj3514]Codechef MARCH14 GERALD07加强版——lct+主席树
    KD-Tree 学习笔记
    SDOI2010 捉迷藏 —— KD-Tree
    HAOI2018染色——容斥
    gitignore 不起作用的解决办法
    reids学习教程
  • 原文地址:https://www.cnblogs.com/zhangxiaos/p/6400703.html
Copyright © 2011-2022 走看看