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

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

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

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

最新文章

  1. Yii 2.x Behavior - 类图
  2. go:channel(未完)
  3. Delphi结构体数组指针的问题
  4. svn和ftp的区别
  5. chrome主页被篡改为360该溶液的导航
  6. MD5加密算法(信息摘要算法)、Base64算法
  7. 走进Vue时代进阶篇(01):重构电商购物车模块
  8. BZOJ 2342: [Shoi2011]双倍回文 [Manacher + set]
  9. const char *p;和char * const p的区别
  10. .Net Core 实践 - 使用log4net记录日志(3)— log4net向ElasticSearch写日志
  11. 斜率优化dp 的简单入门
  12. 如何解决 kubernetes 重启后,启来不来的问题
  13. 解决Eclipse点击运行后控制台不能自动弹出的问题
  14. MySQL去重案列(待更新...)
  15. Cocos Creator 计时器的延时循环试用方法
  16. [转]fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
  17. nodejs爬虫设置动态userAgent
  18. eval详解
  19. [学习笔记]我们追过的神奇异或(Trie树系列)
  20. PAT 1062 最简分数

热门文章

  1. Python基础(十一)-面向对象
  2. 昨天面试遇到的一道C语言题
  3. Paxos算法简单介绍
  4. phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。
  5. RMIC命令提示找不到类的问题
  6. CSU 1640 机智的刷题方式
  7. Tomcat server.xml UTF-8配置
  8. 使用Toad创建存储过程出现错误并解决
  9. iOS开发上架之itunes connect里app信息的编辑
  10. Hadoop之初体验