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

    看书看到了关于二分搜索的内容,自己尝试着用javascript写了一段二分搜索的算法,

    代码如下:

      /*二分搜索 index刚开始默认为0*/
      function getNumIndexOfArray(array, value, index) {
        if (array.length > 0 && array[array.length - 1] >= value) {
          if (array.length > 1) {
            var idx = parseInt(array.length / 2);
            if (array[idx] > value) {
              //表明搜索的数字在前一半里面
              var newarray = array.splice(0, idx);         
              return getNumIndexOfArray(newarray, value, index);
            } else if (array[idx] < value) {
              //表明搜索的数字在后一半里面
              var newarray = array.splice(idx,array.length - idx);
              return getNumIndexOfArray(newarray, value, idx + index);
            } else {
              return idx + index;
            }
          } else {
            if (array[0] == value) {
              return index;
            }
          }
        }
        return -1; //代表输入的有误
      }
    

    自己用整数测试了一下没问题

      var lst = new Array(155);
      function setVal1() {
        for (i = 0; i < lst.length; i++) {
          lst[i] = i * 2 + 1;
        }
      }
      function setVal2() {
        for (i = 0; i < lst.length; i++) {
          lst[i] = i + 1;
        }
      }

    测试如下:

    > setVal1()
    undefined
    > getNumIndexOfArray(lst,66,0)
    -1

    > setVal1()
    undefined
    > getNumIndexOfArray(lst,111,0)
    55

    > setVal2()
    undefined
    > getNumIndexOfArray(lst,66,0)
    65

    二分搜索在实际应用中还是挺重要的,程序不用去遍历匹配,而只用log2 n 次就能计算出结果




  • 相关阅读:
    Java 基础
    Mybatis
    Gateway
    Debug
    Nacos
    Debug
    Debug
    echars 折线图之一条线显示不同颜色,及拐点显示不同颜色
    捌月份生活随笔
    MyMatrix2022 64位版本下载 64bits Edition
  • 原文地址:https://www.cnblogs.com/hueychan/p/10575917.html
Copyright © 2011-2022 走看看