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 相关文章推荐
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
javascript数字格式化通用类 accounting.js使用
Aug 24 Javascript
jsp+javascript打造级连菜单的实例代码
Jun 14 Javascript
jquery实现的图片点击滚动效果
Apr 29 Javascript
JavaScript中的this机制
Jan 30 Javascript
总结jQuery插件开发中的一些要点
May 16 Javascript
JS实现添加,替换,删除节点元素的方法
Jun 30 Javascript
BootStrap select2 动态改变值的方法
Feb 10 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
JavaScript变量声明var,let.const及区别浅析
Apr 23 Javascript
浅谈Three.js截图并下载的大坑
Nov 01 Javascript
JavaScript动画实例之粒子文本的实现方法详解
Jul 28 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
jquery操作select大全
2014/04/25 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
在Python中执行系统命令的方法示例详解
2017/09/14 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
产假请假条
2014/04/10 职场文书
和睦家庭事迹
2014/05/14 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
尊师重教演讲稿
2014/09/04 职场文书
2014年文员工作总结
2014/11/18 职场文书
乱世佳人观后感
2015/06/08 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书