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 相关文章推荐
Jquery 表单验证类介绍与实例
Jun 09 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
利用window.name实现windowStorage代码分享
Jan 02 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
Sep 13 Javascript
微信小程序 自定义消息提示框
Aug 06 Javascript
JavaScript控制浏览器全屏显示简单示例
Jul 05 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
Vertx基于EventBus发送接受自定义对象
Nov 16 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
JAVA/JSP学习系列之二
2006/10/09 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
BootStrap selectpicker
2016/06/20 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
原生JS实现小小的音乐播放器
2017/10/16 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python实现Adapter模式实例代码
2018/02/09 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
np.dot()函数的用法详解
2020/01/17 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
建筑专业自我鉴定
2013/10/22 职场文书
汉语言文学职业规划
2014/02/14 职场文书
我的画教学反思
2014/04/28 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
二审答辩状范文
2015/05/22 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
实战Python爬虫爬取酷我音乐
2022/04/11 Python