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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
JQuery筛选器全系列介绍
Aug 27 Javascript
JS清除选择内容的方法
Jan 29 Javascript
javascript数据结构之双链表插入排序实例详解
Nov 25 Javascript
js格式化输入框内金额、银行卡号
Feb 01 Javascript
JavaScript Promise 用法
Jun 14 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 Javascript
Vue2组件tree实现无限级树形菜单
Mar 29 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
Oct 20 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
May 22 Javascript
element-ui中按需引入的实现
Dec 25 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批量更改数据库表前缀实现方法
2013/10/26 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python网络编程之读取网站根目录实例
2014/09/30 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
目前最全的python的就业方向
2018/06/05 Python
Django Celery异步任务队列的实现
2019/07/24 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Keras loss函数剖析
2020/07/06 Python
Python如何读取、写入CSV数据
2020/07/28 Python
企业给企业的表扬信
2014/01/13 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
2015年化验员工作总结
2015/04/10 职场文书
元宵节晚会主持词
2015/07/01 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
Python学习之时间包使用教程详解
2022/03/21 Python
讲解MySQL增删改操作
2022/05/06 MySQL
服务器nginx权限被拒绝解决案例
2022/09/23 Servers