zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    linux初识1
    linux初识
    练习题
    linux 创建虚拟机常见错误
    DevGridControl中GridView排序问题
    小工具:火车票查询
    小工具:邮件发送
    小工具:截图&简单图像处理
    Winform 控件的入门级使用(一)
    Winform & Devexpress Chart使用入门
  • 原文地址:https://www.cnblogs.com/wenxuehai/p/10312159.html
Copyright © 2011-2022 走看看