数据查找之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位上。

时间: 2024-11-03 21:44:06

数据查找之80-20原则的JavaScript代码实现的相关文章

Liger UI 表格数据查找/通过条件加载数据

api上的例子是在本地过滤的,无法使用,自己摸索了一下. javascript代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 //初始化ligerui控件 $(function (){         maingrid = $("#maingrid").ligerGrid({             columns: [                 {

能让你少写1000行代码的20个正则表达式(javascript版本)

正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date format error!'); 1 . 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间. ^(?=.*\\d)(?=.*[a-z])

网页设计的80/20规则

将精力投入到大部分时间里(80%)用户经常使用的功能和内容(20%) 在理解了80/20规则的作用原理后,设计人员便可以遵循以下方法,总结如下: ·如果可以,仔细分析网站统计和可用性数据,以确定用户最经常使用的那20%的功能. ·排定优先级.关注网站和网络应用中最重要的几个方面,并不断强化. ·统计出归入20%的最常使用的功能,在此基础上简化设计和布局. ·去掉不重要的不经常被使用的功能和内容 . ·不要在那些不太经常使用的功能上投入太多时间和资金,因为你的回报可能是非常小的. ·对于不经常使用

大神手把手教你写一个页面模板引擎,只需20行Javascript代码!

只用20行Javascript代码就写出一个页面模板引擎的大神是AbsurdJS的作者,下面是他分享的全文,转需. 不知道你有木有听说过一个基于Javascript的Web页面预处理器,叫做AbsurdJS.我是它的作者,目前我还在不断地完善它.最初我只是打算写一个CSS的预处理器,不过后来扩展到了CSS和HTML,可以用来把Javascript代码转成CSS和HTML代码.当然,由于可以生成HTML代码,你也可以把它当成一个模板引擎,用于在标记语言中填充数据. 于是我又想着能不能写一些简单的代

linux学习笔记——数据查找、数据截取

##########数据查找########## find             ##find 命令在系统中查找文件    -name        ##按照文件名查找    -user        ##按照文件属主查找    -group        ##按文件属组查找     -perm        ##按文件权限查找    -type        ##按文件类型查找            ##文件类型:b块设备c字符设备d目录f普通文件l链接s(socket)    -size

数据的封装和隐藏原则

这是我第一篇文章,总结了网上牛人的经验,以及我在实践中的思考,记录总结,以便日后回顾. 1.尽量降低耦合 1.1.原理: Martin Fowler写到“任何全局数据通常都是有问题的,除非可以证明它确实没有问题”.多种原因 导致Java中的全局变量和其他类似的全局结构被认为是一种糟糕的做法. 全局数据的本质和含义违背了数据的封装和隐藏原则.理想的情况下, 一个对象应该仅仅与那些通过构造函数或方法调用传入的对象交互.一个对像的实现应当对它的使用者完全隐藏实现细节.(封装隐藏) 所有使用到了这个全局

60行JavaScript代码俄罗斯方块

教你看懂网上流传的60行JavaScript代码俄罗斯方块游戏 早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用C写一个功能基本齐全的俄罗斯方块的话,大约需要1000行代码的样子.所以60行乍一看还是很让人吃惊的. 但是读懂了代码之后发现其实整个程序并没有使用什么神秘的技术,只不过是利用一些工具或者JavaScript本身的技巧大大简化了代码. 总结起来主要是以下三点 1.使用eval

Javascript代码规范

1. 前言 JavaScript一直有着广泛的应用,特别是在浏览器端的行为管理.本文档的目标是使JavaScript代码风格保持一致,容易被理解和被维护. 虽然本文档是针对JavaScript设计的,但是在使用各种JavaScript的预编译语言时(如TypeScript等)时,适用的部分也应尽量遵循本文档的约定. 任何问题或建议,欢迎跟我们讨论 2. 代码风格 2.1. 文件 ·[建议] JavaScript 文件使用无 BOM 的 UTF-8 编码. 解释 UTF-8 编码具有更广泛的适应性

俄罗斯方块游戏JavaScript代码

JavaScript代码俄罗斯方块游戏 早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用C写一个功能基本齐全的俄罗斯方块的话,大约需要1000行代码的样子.所以60行乍一看还是很让人吃惊的. 但是读懂了代码之后发现其实整个程序并没有使用什么神秘的技术,只不过是利用一些工具或者JavaScript本身的技巧大大简化了代码. 总结起来主要是以下三点 1.使用eval来产生JavaScrip