什么是数据结构
收拾东西的时候,你会把它们装进什么里?有时排成长长的一排,有时放进分好格子的抽屉,有时像树枝一样分开挂起来。同样的东西,装在哪里,取出来的难易就不一样。信息也是如此。装信息也有形状,这一课把这种形状叫作容器。
同样的信息,不同的形状
假设有五个朋友的名字。这些名字可以怎么装?可以排成长长的一排,可以放进分成格子的表里,也可以从上到下像树枝一样分开挂起来。
装的内容一样,装的形状却完全不同。这一课把这种形状叫作容器,在计算机科学里叫作数据结构。
把同样的名字依次装进一排、表、分叉里。内容不变,形状变了。
形状变了,里面的名字还是那些。不过,每种形状擅长的事应该略有不同。
一排能一眼看出顺序,表方便准准地点到一格,分叉能看出谁在谁上面。那么,该选哪种形状呢?
适合要做的事的容器
容器不能随便用。先想想要做什么事。想从头到尾按顺序看,就装成一排。想报出名字就马上找到,用表更好。
想分清谁在谁下面,分叉最合适,比如公司的组织结构图,或者电脑里的文件夹。同样的信息,目的不同,合适的容器也就不同。
点一下你要做的事。最适合这件事的容器会亮起来,并告诉你原因。
每换一件事来点,亮起来的容器就不一样。并没有一个永远正确的容器,要做什么事才决定答案。
顺序重要就用一排,快速查找重要就用表。不过还有一点:没有哪个容器能把所有事都做得一样好。
有快的事,也有慢的事
假设选好了一个容器。用它做的动作里,有的非常快,有的相当慢。
想想一排。从头开始依次扫过去很快。可要在一排的正中间插进一个新名字,后面的名字就得全都往后挪一格,所以很慢。每种容器都有擅长的事和不擅长的事。
先挑一个容器,再点动作。就算是同一个容器,快的动作和慢的动作也会分开。
就算在同一个容器里,用绿色标出的快事和用红色标出的慢事也分开了。所以挑容器时,先看自己最常做的是什么事。
常做的事做得快的容器,就是好的选择。名字只有十个时差别不大,可到了一百万个,同一件事可能一眨眼就完,也可能要等很久。同样的数据,怎么装就决定了快慢。
尝尝主要的容器
先把以后常见的容器,只尝尝名字。像一排一样按顺序装、按编号取出的容器叫数组。贴上名牌成对装的容器叫字典。
只在一头放进取出的容器叫栈,排队时先来的先出去的容器叫队列。从上到下分叉的树枝形容器叫树。现在只要记住名字和感觉就够了。
点着翻一翻主要的容器。每个容器都会显示一句介绍和适合做的事。
名字有点陌生也没关系。容器有很多种,每种都有适合的事,抓住这两点就够了。
每一种都会在后面几课里详细讲。在那之前,先把学过的内容归成一句话。
小结
用一句话概括:装信息也有形状,也就是容器。同样的数据,可以装成一排、表、分叉等不同的形状。
容器要照着要做的事来挑,一个容器有的事做得快,有的事做得慢。所以挑得好,程序就快。同样的数据,怎么装决定了速度,这就是关键。
依次点要点回顾一下。(信息有形状 → 适合目的的容器 → 快事·慢事 → 尝尝容器)
现在你知道信息也有形状了,挑容器的眼光也长了一点。
下一课仔细看看最基本的容器:数组。给每一格编上号,报出编号就能马上取出,我们也会看看这种快速的秘密。