数据查找之80-20原则的JavaScript代码实现
作为前端开发人员,无论在工作还是找工作(笔试/面试),或多或少会涉及一些数据结构的知识。
数据结构即计算机存储和组织数据的方式。
关于数据,我们常会用到排序、查找(检索)等操作。常用的排序有冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。常用的查找方式有:顺序查找和二分查找。其中顺序查找中,80/20规则由利于数据的组织与管理,提高数据查找效率。
80/20原则的前提是待查找数据的存储位置在数组的后80%里,其驱动力是数据的查找次数。即当一个数位于数组的后80%部分时,每对其查找一次,该数据就会向前位移一位。80/20原则的JavaScript实现代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>顺序查找之80-20原则的算法实现</title>
</head>
<body>
<script type="text/javascript">
//交换函数
function swap(arr,a1,a2){
var temp = arr[a1];
arr[a1] = arr[a2];
arr[a2] = temp;
}
//主要代码逻辑
function SquSerch(arr,data){
var n = arr.length;
for (var i=0;i<n;i++){
if(arr[i]==data&&i>(n*0.2)){
swap(arr,i,(i-1));
}
}
return -1;
}
//实例演示:
var Num=[23,4,7,8,5,2,9];
SquSerch(Num,5);
SquSerch(Num,5);
SquSerch(Num,5);
SquSerch(Num,5);
console.log(Num);
</script>
</body>
</html>
运行结果:

可知,随着数据“5”查找次数的增多,其位置在逐渐往左移:由原来的第5位移到了第2位上。
数据查找之80-20原则的JavaScript代码实现的更多相关文章
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...
- MongoDB学习(查找文档和其他数据查找操作)
理解Cursor对象和查询运算符 cursor对象 cursor对象相当于一个指针,可通过迭代它来访问MongdoDB数据库中的一组对象. 在使用 find() 方法查询时,返回的并非实际文档,而是一 ...
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- Web前端开发最佳实践(12):JavaScript代码中有大量写死的配置数据?这些数据难以维护,你需要合理组织这些数据
前言 JavaScript代码基本上都是由业务逻辑和数据组成的,逻辑代码根据数据完成一定的操作.很多数据在代码中是写死的,比如一些URL.显示在界面上的提示信息.页面元素相关的样式值及其他使用到的固定 ...
- js 递归树结构数据查找父级
1.json树数据查找所有父级--完成 json:树结构数据 var arrData = [{ "label": "中国", "City": ...
- 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- What the 80/20 Rule Tells Us about Reducing HTTP Requests
Performance Research, Part 1: What the 80/20 Rule Tells Us about Reducing HTTP Requests https://yuib ...
- 俄罗斯方块游戏JavaScript代码
JavaScript代码俄罗斯方块游戏 早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用 ...
- Google JavaScript代码风格指南
Google JavaScript代码风格指南 修正版本 2.28 Aaron Whyte Bob Jervis Dan Pupius Eric Arvidsson Fritz Schneider R ...
随机推荐
- myeclipse连接数据库oracle
package xsl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat ...
- 关于git提交、还原使用
1.本地修改,未提交到本地仓库,想要恢复到修改前 右键这个文件-team-show local hostory -找到某一版本-右键-get Contents 即可恢复到某一版本 2. 命令:git ...
- 浏览器exp使用经验
0x00背景 windows平台下,浏览器安全是绕不过的话题,其涉及的安全问题涵盖二进制和web,攻击场景也非常多样化: 用户点击攻击者的恶意URL链接被感染恶意代码 访问恶意站点被绕过同源策略窃取c ...
- Gradle学习草稿
参考博客:http://www.cnblogs.com/davenkin/p/gradle-learning-1.html Android Plugin DSL Reference http://go ...
- overthewire朝花夕拾
bandit: cat特殊字符文件名 - cat ./- 空格 cat "abc def" or cat abc\ def 列出隐藏文件:ll du -ab 递归列出文件大小,以 ...
- windows API实现用户选择文件路径的对话框
在编写应用程序时,有时需要用户选择某个文件,以供应用程序使用,比如在某些管理程序中需要打开某一个进程,这个时候需要弹出一个对话框来将文件路径以树形图的形式表示出来,以图形化的方式供用户选择文件路径,而 ...
- 在hadoop 的任务中设置 map数量
试验了一下: 调整mapred-site.xml中mapred.min.split.size的值可以改变map的数量 首先设置了hdfs-site.xml中的dfs.block.size为20M,测试 ...
- EconomicIndoor集成测试
加密时序列号相同引发的呼叫功能异常 现象描述: 配置完房间号一次性呼叫问题 问题描述: 两台室内机升级后配置到同一门口机, 各种配置正确. 作为主叫呼不出去, 作为被叫可以接听, 每修改一次房间号, ...
- Apache Kafka开发入门指南(1)
Apache Kafka可以帮助你解决在发布/订阅架构中遇到消费数百万消息的问题.如今,商业应用.社交应用以及其它类型的应用产生的实时信息在不断增长,这些信息需要以简单的方式快速.可靠地路由到各种类型 ...
- JavaScript的DOM(文档对象)基础语法总结1
---恢复内容开始--- 前言:HTML文档可以说由节点构成的集合,DOM节点有: 1). 元素节点:上图中<html>.<body>.<p>等都是元素节点,即标签 ...