秒懂算法:用常识解读数据结构与算法
上QQ阅读APP看书,第一时间看更新

1.1 数据结构

先来聊聊数据。

数据是一个宽泛的术语,可以指代所有类型的信息。最基本的数据就是数和字符串。在简单而又经典的“Hello World!”程序中,字符串"Hello World!"就是数据。事实上,即便最复杂的数据通常也是由数和字符串组成的。

数据结构指的是数据的组合方式。到后面你就会知道,同样的数据也可以有多种组合方式。

来看如下代码。

x = "Hello! "
y = "How are you "
z = "today?"
print x + y + z

这个简单的程序会处理3条数据。它把3个字符串整合输出到一条信息中。如果要描述这个程序中数据的组合方式,我们会说“有3个独立的字符串,每个字符串都存储在一个变量中”。

但是,同样的数据也可以存储在数组中。

array = ["Hello! ", "How are you ", "today?"]
print array[0] + array[1] + array[2]

后面你会学到,数据结构不仅仅是数据的组合方式,还会极大地影响代码运行速度。你组合数据的方式可能会让程序的运行速度提高或者降低几个数量级。如果要写一个处理大量数据的程序,或是开发一个允许上千人同时访问的网页应用,那么你选择的数据结构可能直接决定软件会不会因为负载太高而崩溃。

当你深刻理解数据结构对软件性能可能造成的影响后,就能写出快速而优雅的代码了。这也能大幅提升你作为软件工程师的能力。

本章会先分析两种数据结构:数组和集合。虽然它们看起来差不多,但是你会学到分析两者性能的方法。