JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】


Posted in Javascript onFebruary 22, 2019

本文实例讲述了JavaScript数据结构与算法之检索算法。分享给大家供大家参考,具体如下:

javascript数据结构与算法---检索算法(顺序查找、最大最小值、自组织查询)

一、顺序查找法

/*
* 顺序查找法
*
* 顺序查找法只要从列表的第一个元素开始循环,然后逐个与要查找的数据进行比较。
* 如果匹配到了,则结束查找。
* 如果到了列表的结尾也没有匹配到,那么这个数据就不存在于这个列表中。
* */
function seqSearch(arr, data) {
  for (var i = 0; i < arr.length; ++i) {
    if (arr[i] == data) {
      return i;
    }
  }
  return -1;
}
function dispArr(arr) {
  var str = "";
  for (var i = 0; i < arr.length; ++i) {
    str += arr[i] + " ";
    if ((i > 0)&&(i % 10 == 0)) {
      str += "\n";
    }
  }
  console.log(str);
}
var nums = [];
for (var i = 0; i < 100; ++i) {
  nums[i] = Math.floor(Math.random() * 101);
}
dispArr(nums);
console.log("Enter a number to search for: ");
var num = parseInt(23);
console.log();
var index = seqSearch(nums, num);
if (index > -1) {
  console.log(num + " 存在数组中."+"在数组中的索引位置为" + index);
}else {
  console.log(num + " 不存在数组中");
}

运行结果:

JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】

二、最大最小值、自组织查询

/*查找最小值
* (1)将数组第一个元素赋值给一个变量,把这个变量作为最小值。
* (2)开始遍历数组,从第二个元素开始依次同当前最小值进行比较。
* (3)如果当前元素数值小于当前最小值,则将当前元素设为新的最小值。
* (4)移动到下一个元素,并且重复步骤3。
* (5)当程序结束时,这个变量中存储的就是最小值。
* */
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 && i > (arr.length * 0.2)) {
      swap(arr,i,0);
      return true;
    }
    else if (arr[i] == data) {
      return true;
    }
  }
  return false;
}
function dispArr(arr) {
  var str = "";
  for (var i = 0; i < arr.length; ++i) {
    str += arr[i] + " ";
    if ((i > 0)&&(i % 10 == 0)) {
      str += "\n";
    }
  }
  console.log(str);
}
var nums = [];
for (var i = 0; i < 100; ++i) {
  nums[i] = Math.floor(Math.random() * 101);
}
var minValue = findMin(nums);
dispArr(nums);
console.log("The minimum value is: " + minValue);
var maxValue = findMax(nums);
console.log("The maximum value is: " + maxValue);

运行结果:

JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript对象的创建和访问
Mar 08 Javascript
ajax在兼容模式下失效的快速解决方法
Mar 22 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
Canvas 制作动态进度加载水球详解及实例代码
Dec 09 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
Jan 04 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 Javascript
js实现动态显示时间效果
Mar 06 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
Three.js利用顶点绘制立方体的方法详解
Sep 27 Javascript
微信小程序使用request网络请求操作实例
Dec 15 Javascript
Vue3 实现双盒子定位Overlay的示例
Dec 22 Vue.js
一百多行代码实现react拖拽hooks
Mar 23 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 #Javascript
用Fundebug插件记录网络请求异常的方法
Feb 21 #Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 #Javascript
利用vue重构有赞商城的思路以及总结整理
Feb 21 #Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 #Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
Feb 21 #Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 #Javascript
You might like
关于页面优化和伪静态
2009/10/11 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Django缓存系统实现过程解析
2019/08/02 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
Python实现点云投影到平面显示
2020/01/18 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
如何写出好的Java代码
2014/04/25 面试题
学生安全责任书
2014/04/15 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
Python list列表删除元素的4种方法
2021/11/01 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android