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 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
JavaScript游戏之是男人就下100层代码打包
Nov 08 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
div实现自适应高度的textarea实现angular双向绑定
Jan 08 Javascript
微信小程序下拉刷新界面的实现
Sep 28 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
vue动态路由配置及路由传参的方式
May 23 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
Aug 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 Memcached应用实现代码
2010/02/08 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
再探JavaScript作用域
2014/09/24 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Sublime开发python程序的示例代码
2018/01/24 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Python之字典添加元素的几种方法
2020/09/30 Python
SQL数据库笔试题
2016/03/08 面试题
建材业务员岗位职责
2013/12/08 职场文书
财务担保书范文
2014/04/02 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
工作收入证明范本
2015/06/12 职场文书