前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 数据结构与算法(一)前言

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

作者头像
XPoet
发布2021-04-26 14:29:52
3060
发布2021-04-26 14:29:52
举报
文章被收录于专栏:前端鼓励师前端鼓励师

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

什么是数据结构?

数据结构的定义

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

数据结构在生活中应用

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

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

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

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

图书各种摆放方式:

  • 方法 1:随便放
    • 操作 1:哪里有空位放哪里。
    • 操作 2:找某本书,累死。
  • 方法 2:按照书名的拼音字母顺序排放
    • 操作 1:新进一本《阿 Q 正传》, 按照字母顺序找到位置,插入。
    • 操作 2:二分查找法。
  • 方法 3:把书架划分成几块区域,按照类别存放,类别中按照字母顺序
    • 操作 1:先定类别,二分查找确定位置,移出空位。
    • 操作 2:先定类别,再二分查找。

结论:

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

常见的数据结构

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

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

什么是算法?

算法(Algorithm)的定义

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

算法通俗理解

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

算法案例

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

  • 线性查找
    • 从上海的起点开始一米一米的排查,最终一定能找到出问题的线段。
    • 但是如果线段在另一头,我们需要排查 1,000,000 次,这是最坏的情况,平均需要 500,000 次。
  • 二分查找
    • 从中间位置开始排查,看一下问题出在上海到中间位置,还是中间到杭州的位置。
    • 查找对应的问题后,再从中间位置分开,重新锁定一般的路程。
    • 最坏的情况,需要多少次可以排查完呢? 最坏的情况是 20 次就可以找到出问题的地方。
    • 怎么计算出来的呢? log(1000000, 2),以 2 位底,1000000 的对数 ≈ 20。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端鼓励师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaScript 数据结构与算法(一)前言
    • 什么是数据结构?
      • 数据结构的定义
      • 数据结构在生活中应用
      • 常见的数据结构
    • 什么是算法?
      • 算法(Algorithm)的定义
      • 算法通俗理解
      • 算法案例
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档