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 相关文章推荐
图片上传即时显示缩略图的js代码
May 27 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
Aug 14 Javascript
script不刷新页面的联动前后代码
Sep 18 Javascript
使用JavaScript实现Java的List功能(实例讲解)
Nov 07 Javascript
JS的参数传递示例介绍
Feb 08 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
详解vue或uni-app的跨域问题解决方案
Feb 21 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
PHP 中执行系统外部命令
2006/10/09 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP中文乱码解决方案
2015/03/05 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
js 文件引入实现代码
2010/04/23 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
python版学生管理系统
2018/01/10 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
中式结婚主持词
2014/03/14 职场文书
工地安全质量标语
2014/06/07 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
体育运动会广播稿
2014/10/05 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python