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+CSS3实现一款简洁大气带滑动效果的弹出层
May 15 Javascript
url中的特殊符号有什么含义(推荐)
Jun 17 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
详解jenkins自动化部署vue
May 14 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 Javascript
JS实现压缩上传图片base64长度功能
Dec 03 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 Javascript
node.js如何操作MySQL数据库
Oct 29 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
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python进程间通信Queue实例解析
2018/01/25 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Python如何输出百分比
2020/07/31 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
财务科科长岗位职责
2014/03/10 职场文书
高中家长寄语
2014/04/02 职场文书
论文评语大全
2014/04/29 职场文书
我的梦想演讲稿
2014/04/30 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
介绍信范文大全
2015/05/07 职场文书