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中的对象化编程
Jan 16 Javascript
JS 日期验证正则附asp日期格式化函数
Sep 11 Javascript
Javascript 日期处理之时区问题
Oct 08 Javascript
IE6下focus与blur错乱的解决方案
Jul 31 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
Oct 25 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
js实现贪吃蛇小游戏
Oct 29 Javascript
JS继承实现方法及优缺点详解
Sep 02 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
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
JS 表单验证大全
2011/11/23 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python实现给数组按片赋值的方法
2015/07/28 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
Python实现的knn算法示例
2018/06/14 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Python字典dict常用方法函数实例
2020/11/09 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
局域网定义和特性
2016/01/23 面试题
警察先进个人事迹材料
2014/05/16 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
小学运动会开幕词
2015/01/28 职场文书
企业法律事务工作总结
2015/08/11 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang