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 弹出框定位实现方法
Dec 02 Javascript
Js sort排序使用方法
Oct 17 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
jQuery实现简单的图片查看器
Sep 11 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 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 数据结构 算法 三元组 Triplet
2011/07/02 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php常用正则函数实例小结
2016/12/29 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python实现树形打印目录结构
2018/03/29 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python实现狄克斯特拉算法
2019/01/17 Python
python获取交互式ssh shell的方法
2019/02/14 Python
python面试题之列表声明实例分析
2019/07/08 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
社区艾滋病宣传活动总结
2015/05/07 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python