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));

  • 相关阅读:
    demo_38 关注页导航栏实现
    demo_37 评论列表实现_02 封装popup 及 格式化时间
    demo_37 评论列表实现_01
    SaaS
    rsyncd脚本
    rsyncd
    MySQL高可用--MHA安装
    正向代理
    zabbix 一键部署
    kvm安装
  • 原文地址:https://www.cnblogs.com/zhangxiaos/p/6400703.html
Copyright © 2011-2022 走看看