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 String对象扩展HTML编码和解码的方法
Jun 02 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
动态添加删除表格行的js实现代码
Feb 28 Javascript
javascript避免数字计算精度误差的方法详解
Mar 05 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
Vue 2.0入门基础知识之内部指令详解
Oct 15 Javascript
记一次webpack3升级webpack4的踩坑经历
Jun 12 Javascript
mpvue跳转页面及注意事项
Aug 03 Javascript
JQuery基于FormData异步提交数据文件
Sep 01 jQuery
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
php中神奇的fastcgi_finish_request
2011/05/02 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
通过修改referer下载文件的方法
2008/05/11 Javascript
javascript获取当前ip的代码
2009/05/10 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
bootstrap的工具提示实例代码
2017/05/17 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
python+opencv实现动态物体追踪
2018/01/09 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Python shutil模块用法实例分析
2019/10/02 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
毕业生求职自荐书范文
2014/03/27 职场文书
人事代理委托书
2014/09/27 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android