JavaScript 数据结构与算法(一)前言

什么是数据结构?

数据结构的定义

  • 官方定义

  • 民间定义

    • “数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。” — 《数据结构、算法与应用》
    • “数据结构是 ADT(抽象数据类型 Abstract Data Type)的物理实现。” — 《数据结构与算法分析》
    • “数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。” —中文维基百科
  • 从自己角度认识

    在计算机中,存储和组织数据的方式。

数据结构在生活中应用

我们知道,计算机中数据量非常庞大,如何以高效的方式组织和存储呢?

例如:一个庞大的图书馆中存放了大量的书籍,我们不仅仅要把书放进入,还应该在合适的时候能够取出来。

图书摆放要使得两个相关操作方便实现:

  • 操作 1:新书怎么插入?
  • 操作 2:怎么找到某本指定的书?

图书各种摆放方式:

  • 方法 1:随便放

    • 操作 1:哪里有空位放哪里。
    • 操作 2:找某本书,累死。
  • 方法 2:按照书名的拼音字母顺序排放

    • 操作 1:新进一本《阿 Q 正传》, 按照字母顺序找到位置,插入。
    • 操作 2:二分查找法。
  • 方法 3:把书架划分成几块区域,按照类别存放,类别中按照字母顺序

    • 操作 1:先定类别,二分查找确定位置,移出空位。
    • 操作 2:先定类别,再二分查找。

结论:

  • 解决问题方法的效率,根据数据的组织方式有关。
  • 计算机中存储的数据量相对于图书馆的书籍来说数据量更大,数据更加多。
  • 以什么样的方式,来存储和组织我们的数据才能在使用数据时更加方便呢?
  • 这就是数据结构需要考虑的问题。

常见的数据结构

  • 数组(Aarray)
  • 栈(Stack)
  • 链表(Linked List)
  • 图(Graph)
  • 散列表(Hash)
  • 队列(Queue)
  • 树(Tree)
  • 堆(Heap)

注意:数据结构与算法与语言无关,常见的编程语言都有直接或间接的使用上述常见的数据结构。

什么是算法?

算法(Algorithm)的定义

  • 一个有限指令集,每条指令的描述不依赖于语言。
  • 接收一些输入(有些情况下不需要输入)。
  • 产生输出。
  • 一定在有限步骤之后终止。

算法通俗理解

  • Algorithm 这个单词本意就是解决问题的办法/步骤逻辑。
  • 数据结构的实现,离不开算法。

算法案例

假如上海和杭州之间有一条高架线,高架线长度是 1,000,000 米,有一天高架线中有其中一米出现了故障,请你想出一种算法,可以快速定位到处问题的地方。

  • 线性查找

    • 从上海的起点开始一米一米的排查,最终一定能找到出问题的线段。
    • 但是如果线段在另一头,我们需要排查 1,000,000 次,这是最坏的情况,平均需要 500,000 次。
  • 二分查找

    • 从中间位置开始排查,看一下问题出在上海到中间位置,还是中间到杭州的位置。
    • 查找对应的问题后,再从中间位置分开,重新锁定一般的路程。
    • 最坏的情况,需要多少次可以排查完呢? 最坏的情况是 20 次就可以找到出问题的地方。
    • 怎么计算出来的呢? log(1000000, 2),以 2 位底,1000000 的对数 ≈ 20。

结论:
你会发现,解决问题的办法有很多,但是好的算法对比于差的算法,效率天壤之别。

01_JavaScript数据结构与算法(一)前言相关推荐

  1. JavaScript数据结构和算法简述——前言

    为什么要使用数据结构和算法(程序=数据结构+算法)         数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排.包括数组.链表.栈.二叉树.哈希表等.        算法是对这些结构中 ...

  2. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

  3. vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言

    基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...

  4. 第一章 数据结构与算法-前言

    Hello,I'm 郭永峰,一名IT从业者,也是一名Java Sharer.Teacher.欢迎添加微信号或者QQ号,一起学习交流,微信与QQ同号(1030103135).目前在腾讯课堂也出了一些教程 ...

  5. 资料分享:送你一本《数据结构与算法JavaScript描述》电子书!

    数据结构 是掌握计算机编程必须具备的技能.通常情况下,我想掌握一门编程语言所用的方法就是利用这门语言把数据结构中线性表.栈.队列.字符串.动态数字.整数集合.树.图.搜索.排序等涉及的算法全部写一遍. ...

  6. Java 数据结构与算法系列之冒泡排序

    一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...

  7. Java数据结构与算法——树(基本概念,很重要)

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...

  8. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

  9. 数据结构与算法学习-开篇

    前言 数据结构和算法这门课一直是计算机专业最基础的一门课,大学时期掌握的不够好,毕业后长期写业务,也没有特别的花时间好好攻克一下,一直是自己的短板.这次在极客时间上订阅了两门数据结构和算法方面的专栏, ...

最新文章

  1. 史上最强:numpy实现全部机器学习算法
  2. bad src image pointers
  3. 初探JavaScript(一)——也谈元素节点、属性节点、文本节点
  4. ajax的核心有哪些,ajax的核心
  5. 循序渐进看Java web日志跟踪(2)-Java日志API认识
  6. 使用JShell的Java 9 Streams API
  7. leetcode 82. 删除排序链表中的重复元素 II(map)
  8. 小黑框运行java_初探Java类加载机制
  9. mysql实战数据.sql_Mysql实战(DML增删改+Select)
  10. 用lstm模型做预测_使用LSTM深度学习模型进行温度的时间序列单步和多步预测
  11. 文本检查点web_reg_find和web_find两个函数的区别
  12. 关联分析(二)--FP-Growth算法
  13. 2016计算机考研408答案,2016年计算机408统考考研真题及答案解析.pdf
  14. 我的华为云售后日常(一)
  15. digester_Apache Digester示例–轻松配置
  16. html+css+js(未完待续)
  17. 移动流量转赠给好友_中国移动怎么才能转赠手机流量
  18. 超级详细-NMOS、PMOS的工作原理及相关内容整理(下)
  19. 假如从餐饮店的角度来看架构…
  20. 为什么商家有了收款二维码还要使用聚合支付?

热门文章

  1. offiece邮箱服务器,急!!OFFICE 365邮箱服务器IP地址问题?
  2. Unity 之 接入腾讯Bugly简述【Android端】
  3. 桌面的html文件怎么打开方式,怎么将浏览器打开的页面保存到桌面
  4. html绘制动态小人,使用canvas实现行走的小人动画
  5. 中英双语界面的 Premiere Pro
  6. mysql数据库安装资源、步骤及基本操作指令详解
  7. 局域网语音对讲系统_高速公路隧道电话广播一体调度系统解决方案
  8. 让你的高清监控摄像头,轻松实现在微信公众号直播
  9. 图文讲解Python数据可视化神器 !
  10. 面试官:Zookeeper怎么解决读写、双写并发不一致问题,以及共享锁的实现原理?