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简单体验
Jan 10 Javascript
屏蔽F1~F12的快捷键的js函数
May 06 Javascript
javascript通过元素id和name直接取得元素的方法
Apr 28 Javascript
javascript 判断两个日期之差的示例代码
Sep 05 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
JS弹性运动实现方法分析
Dec 15 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
Vue实现购物车场景下的应用
Nov 27 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
玩转vue的slot内容分发
Sep 22 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 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如何得到当前页和上一页的地址?
2006/11/27 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
vue 组件简介
2020/07/31 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
Python实现通讯录功能
2018/02/22 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
快速查找Python安装路径方法
2020/02/06 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
分家协议书
2014/04/21 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
感恩节活动策划方案
2014/05/16 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
小学生表扬稿范文
2015/05/05 职场文书
技术入股协议书
2016/03/22 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python