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代码
Nov 23 Javascript
JavaScript中实现块作用域的方法
Apr 01 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
JS动态添加iframe的代码
Sep 14 Javascript
Vue实现双向数据绑定
May 03 Javascript
vue下跨域设置的相关介绍
Aug 26 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
彻底理解js面向对象之继承
Feb 04 Javascript
详解react-redux插件入门
Apr 19 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 Javascript
小程序server请求微信服务器超时的解决方法
May 21 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
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中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
JS中的三个循环小结
2017/06/20 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python魔术方法详解
2015/02/14 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
Python中的自省(反射)详解
2015/06/02 Python
小小聊天室Python代码实现
2016/08/17 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
奥巴马演讲稿
2014/01/08 职场文书
公司营业员的自我评价
2014/03/04 职场文书
中专生自荐信
2014/06/25 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
解除处分决定书
2015/06/25 职场文书
Python进程间的通信之语法学习
2022/04/11 Python