数据结构——认识数据结构与算法

150 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

前言

如果只是想了解语言的应用层面,那么数据结构和算法显得没有那么重要。但是如果我们想要了解语言的设计层面,那么数据结构和算法就非常重要了。

什么是数据结构

关于什么是数据结构,并没有非常官方的定义,但在一些书中和百科中会有一些解释,比如:

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

可以看到,几乎所有关于数据结构相关的都会与算法联系起来,这是因为数据结构的实现离不开算法。

简单来理解下数据结构:

  • 数据结构就是在计算机中,存储和组织数据的方式。

我们所写的程序其实就是用来处理各种各样的数据的,由于空间不同,数据量不同,那组织数据的方式也是不一样的。

举个例子: 以摆放图书为例。

  • 如果是自己家中的书,相对较少,可以随意摆放。由于数量较小,因此查找起来也很容易。
  • 如果是一家书店,书的数量就会变得相对多一些,为了便有查找,就需要有一定的摆放策略了。
  • 假如是一家图书馆,那书的数量就会变得非常大非常大,这种情况下,组织和摆放图书就需要更有效率的方法。

未命名文件 (1).png

常见的数据结构

常见的数据结构有 队列(Queue)、数组(Arrary)、栈(Stack)、链表(Linked list)、树(Tree)、堆(Heap)、图(Graph)、散列表(Hash)。

每一种数据结构都有其对应的应用场景,不同的数据结构的不同操作性能是不同的。有的查询性能很快,有的插入速度很快,有的是插入头和尾速度很快。有的做范围查找很快,有的允许元素重复,有的不允许重复。

什么是算法(Algorithm)

在解决问题的过程中,不仅仅数据的存储方式会影响效率,算法的优劣也会影响着效率。到底什么是算法呢?

是一个有限指令集,每条指令的描述不依赖于语言,其接受一些输入,并产生输出,并且一定在有限步骤之后终止。

相对通俗的解释就是解决问题的办法/步骤逻辑。

生活中的应用

  • 快递的摆放与拿取,为了高效分发,需要对快递进行分类。
  • 如何快速找出线缆出问题的地方。如何在长度为1000米的线缆中,找到其中1米有故障的地方。这里我们就需要算法了。
    • 一种就是暴力的一米一米的查找,线性查找。
    • 一种就是可以使用二分查找的方法

我们会发现,在生活中,解决问题的办法有很多,但好的算法比坏的算法,效率是有天壤之别的。

总结

数据结构:数据结构就是在计算机中,存储和组织数据的方式。 算法:通俗来解释就是解决问题的办法/步骤逻辑。

总之,掌握数据结构和算法,不管对于阅读源码,还是理解背后的设计思想,都是非常有用的。