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的父子兄弟节点查找示例代码
Mar 03 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
js限制文本框只能输入中文的方法
Aug 11 Javascript
jQuery实现Tab菜单滚动切换的方法
Sep 21 Javascript
JavaScript严格模式详解
Nov 18 Javascript
Bootstrap简单表单显示学习笔记
Nov 15 Javascript
jquery实现页面加载效果
Feb 21 Javascript
解决vue build打包之后首页白屏的问题
Mar 06 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
深入Vue-Router路由嵌套理解
Aug 13 Javascript
js实现搜索栏效果
Nov 16 Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 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面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
制作特殊字的脚本
2006/06/26 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
python实现线程池的方法
2015/06/30 Python
python实现textrank关键词提取
2018/06/22 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Python装饰器简单用法实例小结
2018/12/03 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python print出共轭复数的方法详解
2019/06/25 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
办公室内勤岗位职责范本
2013/12/09 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
财务会计求职信范文
2015/03/20 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书