博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中算法之检索算法(查找算法)
阅读量:5010 次
发布时间:2019-06-12

本文共 1223 字,大约阅读时间需要 4 分钟。

顺序查找

查找指定值

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

 

转载于:https://www.cnblogs.com/wenxuehai/p/10312159.html

你可能感兴趣的文章
Mock InjectMocks ( @Mock 和 @InjectMocks )区别
查看>>
如何获取免版权图片资源
查看>>
MySql避免全表扫描【转】
查看>>
Storm学习笔记二
查看>>
windows 中的类似于sudo的命令(在cmd中以另一个用户的身份运行命令)
查看>>
java===单类设计模式之饿汉式与懒汉式
查看>>
BZOJ 1083: [SCOI2005]繁忙的都市
查看>>
Maven 编译
查看>>
《学习之道》第十章学习方法29还记得散步的好处嘛
查看>>
Git常用命令总结
查看>>
form表单 ----在路上(15)
查看>>
XsdGen:通过自定义Attribute与反射自动生成XSD
查看>>
iOS获取设备IP地址
查看>>
SPOJ GSS3 Can you answer these queries III (线段树)
查看>>
JavaSE| String常用方法
查看>>
NRF51822配对绑定要点
查看>>
C语言博客作业—数据类型
查看>>
暑假周总结报告2
查看>>
20169216网络攻防技术第三次作业
查看>>
Nginx正则表达式之匹配操作符详解
查看>>