作为前端开发人员,无论在工作还是找工作(笔试/面试),或多或少会涉及一些数据结构的知识。

  数据结构即计算机存储和组织数据的方式。

  常用的结构:数组、栈、队列、链表、树、图、堆和散列表

  关于数据,我们常会用到排序、查找(检索)等操作。常用的排序有冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。常用的查找方式有:顺序查找和二分查找。其中顺序查找中,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代码实现的更多相关文章

  1. 只有20行Javascript代码!手把手教你写一个页面模板引擎

    http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...

  2. MongoDB学习(查找文档和其他数据查找操作)

    理解Cursor对象和查询运算符 cursor对象 cursor对象相当于一个指针,可通过迭代它来访问MongdoDB数据库中的一组对象. 在使用 find() 方法查询时,返回的并非实际文档,而是一 ...

  3. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  4. Web前端开发最佳实践(12):JavaScript代码中有大量写死的配置数据?这些数据难以维护,你需要合理组织这些数据

    前言 JavaScript代码基本上都是由业务逻辑和数据组成的,逻辑代码根据数据完成一定的操作.很多数据在代码中是写死的,比如一些URL.显示在界面上的提示信息.页面元素相关的样式值及其他使用到的固定 ...

  5. js 递归树结构数据查找父级

    1.json树数据查找所有父级--完成 json:树结构数据 var arrData = [{ "label": "中国", "City": ...

  6. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  7. 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 ...

  8. 俄罗斯方块游戏JavaScript代码

    JavaScript代码俄罗斯方块游戏 早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用 ...

  9. Google JavaScript代码风格指南

    Google JavaScript代码风格指南 修正版本 2.28 Aaron Whyte Bob Jervis Dan Pupius Eric Arvidsson Fritz Schneider R ...

随机推荐

  1. linux 调整文件系统大小 LVM

    fuser -m /home umount /home lvreduce -L 150G /dev/mapper/centos-home lvextend -L +300G /dev/mapper/c ...

  2. Windows Server2012上使用Nginx做文件服务器

    由于项目中用到了大量的文件上传和删除,考虑到安全的因素,所以整体的思路是使用FTP从主服务器把文件资源上传到文件服务器上. FTP上传到服务器的代码如下(简单附加一下,具体的网上很多) public ...

  3. net之session漫谈及分布式session解决方案

    最近一直在纠结net下分布式会话的实现,现将近日来的个人感想记录如下,如果有什么更好的解决方案请指教. 1.什么是session: Session 对象存储特定用户会话所需的属性及配置信息.这样,当用 ...

  4. Java代码之输出参数和(强制类型转换)

    说明(因为Java中java Application的参数都是默认的字符型的数据,所以需要强制类型转换这一步骤) 设计思想: 向系统里输入若干个参数,计算出参数个数,利用for语句计算出参数的和.(程 ...

  5. 在Ubuntu下搭建FTP服务器的方法

    由于整个学校相当于一个大型局域网,相互之间传送数据非常快,比如要共享个电影,传点资料什么的. 所以我们可以选择搭建一个FTP服务器来共享文件. 那么问题来了,有的同学会问,我们既然在一个局域网内,直接 ...

  6. if和switch的原理

    在C语言中,if和switch是条件分支的重要组成部分.if的功能是计算判断条件的值,根据返回的值的不同来决定跳转到哪个部分.值为真则跳转到if语句块中,否则跳过if语句块.下面来分析一个简单的if实 ...

  7. SQL 范式(转载)

    装载于"http://www.cnblogs.com/KissKnife/ 理论性的东西,往往容易把人人都看得懂的东西写成连鬼都看不懂,近似于主任医生开的药方.从前学范式的时候,把书中得概念 ...

  8. rxJava rxandroid 学习

    学习地址 很全面: http://blog.csdn.net/meegomeego/article/details/49155989 final String[] words = {"Hel ...

  9. Jmeter学习笔记

    Jmeter安装 Jmeter组件介绍 Jmeter

  10. Merge into的使用详解-你Merge了没有【转】

    Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一 ...