seegongsik
数据

什么是数据结构

收拾东西的时候,你会把它们装进什么里?有时排成长长的一排,有时放进分好格子的抽屉,有时像树枝一样分开挂起来。同样的东西,装在哪里,取出来的难易就不一样。信息也是如此。装信息也有形状,这一课把这种形状叫作容器。

01

同样的信息,不同的形状

假设有五个朋友的名字。这些名字可以怎么装?可以排成长长的一排,可以放进分成格子的表里,也可以从上到下像树枝一样分开挂起来。
装的内容一样,装的形状却完全不同。这一课把这种形状叫作容器,在计算机科学里叫作数据结构。

Mina
-
Theo
-
Ravi
-
Lia
-
Sora
排成一排,一个接一个。顺序一眼就能看出。
点一下形状来切换。里面的名字还是一样。

把同样的名字依次装进一排、表、分叉里。内容不变,形状变了。

形状变了,里面的名字还是那些。不过,每种形状擅长的事应该略有不同。
一排能一眼看出顺序,表方便准准地点到一格,分叉能看出谁在谁上面。那么,该选哪种形状呢?

02

适合要做的事的容器

容器不能随便用。先想想要做什么事。想从头到尾按顺序看,就装成一排。想报出名字就马上找到,用表更好。
想分清谁在谁下面,分叉最合适,比如公司的组织结构图,或者电脑里的文件夹。同样的信息,目的不同,合适的容器也就不同。

一排
表
分叉
点一下你要做的事。

点一下你要做的事。最适合这件事的容器会亮起来,并告诉你原因。

每换一件事来点,亮起来的容器就不一样。并没有一个永远正确的容器,要做什么事才决定答案。
顺序重要就用一排,快速查找重要就用表。不过还有一点:没有哪个容器能把所有事都做得一样好。

03

有快的事,也有慢的事

假设选好了一个容器。用它做的动作里,有的非常快,有的相当慢。
想想一排。从头开始依次扫过去很快。可要在一排的正中间插进一个新名字,后面的名字就得全都往后挪一格,所以很慢。每种容器都有擅长的事和不擅长的事。

先挑一个容器
先挑容器,再点动作看看是快还是慢。

先挑一个容器,再点动作。就算是同一个容器,快的动作和慢的动作也会分开。

就算在同一个容器里,用绿色标出的快事和用红色标出的慢事也分开了。所以挑容器时,先看自己最常做的是什么事。
常做的事做得快的容器,就是好的选择。名字只有十个时差别不大,可到了一百万个,同一件事可能一眨眼就完,也可能要等很久。同样的数据,怎么装就决定了快慢。

04

尝尝主要的容器

先把以后常见的容器,只尝尝名字。像一排一样按顺序装、按编号取出的容器叫数组。贴上名牌成对装的容器叫字典。
只在一头放进取出的容器叫栈,排队时先来的先出去的容器叫队列。从上到下分叉的树枝形容器叫树。现在只要记住名字和感觉就够了。

数组
像一排一样按顺序装,按编号准准地取出。
适合的事按顺序看、按编号找
点着翻一翻主要的容器。细节后面几讲讲。

点着翻一翻主要的容器。每个容器都会显示一句介绍和适合做的事。

名字有点陌生也没关系。容器有很多种,每种都有适合的事,抓住这两点就够了。
每一种都会在后面几课里详细讲。在那之前,先把学过的内容归成一句话。

05

小结

用一句话概括:装信息也有形状,也就是容器。同样的数据,可以装成一排、表、分叉等不同的形状。
容器要照着要做的事来挑,一个容器有的事做得快,有的事做得慢。所以挑得好,程序就快。同样的数据,怎么装决定了速度,这就是关键。

依次点要点回顾一下。

依次点要点回顾一下。(信息有形状 → 适合目的的容器 → 快事·慢事 → 尝尝容器)

现在你知道信息也有形状了,挑容器的眼光也长了一点。
下一课仔细看看最基本的容器:数组。给每一格编上号,报出编号就能马上取出,我们也会看看这种快速的秘密。

一句话总结装信息也有形状,这种形状叫容器,在计算机科学里叫数据结构。同样的数据,装成一排、装进表里还是装成分叉,形状就不一样。容器不能随便用,要照着要做的事来挑。想按顺序看,一排好;想按名字快速找,表好。而且没有哪个容器能把所有事都做得一样好,有的动作快,有的动作慢。所以,挑对容器就是快速程序的开始。
← 数据
如果有帮助,请支持我们