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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
Oct 17 Javascript
深入分析Javascript跨域问题
Apr 17 Javascript
详解JS正则replace的使用方法
Mar 06 Javascript
Bootstrap每天必学之附加导航(Affix)插件
Apr 25 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
node.js基于mongodb的搜索分页示例
Jan 22 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
LayUI动态设置checkbox不显示的解决方法
Sep 02 Javascript
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 Javascript
如何在JavaScript中使用localStorage详情
Feb 04 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
node.js中的console.trace方法使用说明
2014/12/09 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python中作用域的深入讲解
2018/12/10 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
承兑汇票转让证明怎么写?
2014/11/30 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
子女赡养老人协议书
2016/03/23 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫