• JS中算法之检索算法(查找算法)


    顺序查找

    查找指定值

    function seqSearch(arr, data) {
      for (var i = 0; i < arr.length; ++i) {
        if (arr[i] == data) {
        return true;
      }
      }
      return false;
    }

    查找最小值和最大值

    function findMin(arr) {
      var min = arr[0];
      for (var i = 1; i < arr.length; ++i) {
        if (arr[i] < min) {
        min = arr[i];
      }
      }
      return min;
    }
    
    function findMax(arr) {
      var max = arr[0];
      for (var i = 1; i < arr.length; ++i) {
        if (arr[i] > max) {
          max = arr[i];
        }
      }
      return max;
    }

    自组织数据

    对于未排序的数据集来说,当被查找的数据位于数据集的起始位置时,查找是最快、最成功的。通过将成功找到的元素置于数据集的起始位置,可以保证在以后的操作中该元素能被更快地查找到。

    function seqSearch(arr, data) {
      for (var i = 0; i < arr.length; ++i) {
        if (arr[i] == data) {
          if (i > 0) {
            var temp = arr[i];  //使得被找到的数据逐渐向前移
            arr[i] = arr[i-1];
            arr[i-1] = temp;
          }
          return true;
        }
      }
      return false;
    }

    二分查找

    如果你要查找的数据是有序的,二分查找算法比顺序查找算法更高效。

    function binSearch(arr, data) {
      var upperBound = arr.length-1;
      var lowerBound = 0;
      while (lowerBound <= upperBound) {
        var mid = Math.floor((upperBound + lowerBound) / 2);
        if (arr[mid] < data) {
          lowerBound = mid + 1;
        }else if (arr[mid] > data) {
          upperBound = mid - 1;
        }else {
          return mid;
        }
      }
      return -1;
    }
  • 相关阅读:
    AndroidUI组件之ListView小技巧
    iframe属性參数
    Applet 数字签名技术全然攻略
    SoftReference
    递归算法浅谈
    VS2010 打包生成exe文件后 执行安装文件出现 TODO:&lt;文件说明&gt;已停止工作并已关闭
    创建新的Cocos2dx 3.0项目并解决一些编译问题
    ORACLE触发器具体解释
    SRM 624 D2L3: GameOfSegments, 博弈论,Sprague–Grundy theorem,Nimber
    cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
  • 原文地址:https://www.cnblogs.com/wenxuehai/p/10312159.html
Copyright © 2020-2023  润新知