• 二分搜索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 次就能计算出结果




  • 相关阅读:
    09-JS的事件流的概念(重点)
    08-jQuery的位置信息
    07-小米导航案例
    python-selector模块
    python--day9--异步IO、数据库、队列、缓存
    python--select多路复用socket
    python--gevent高并发socket
    python--协程
    python--进程锁、进程池
    python--多进程
  • 原文地址:https://www.cnblogs.com/hueychan/p/10575917.html
Copyright © 2020-2023  润新知