数据结构导论
你好!欢迎来到计算机科学学习旅程中最重要章节之一。到目前为止,你可能已经使用过变量(Variables)来存储单一的信息,例如分数或姓名。但如果需要追踪 100 个高分记录,或是存储一辆车的复杂详细资料时,该怎么办呢?
这就是数据结构(Data Structures)登场的时候了!你可以将数据结构想象成一种组织和存储数据的方式,让我们能高效地找到并使用它。这就像是把衣服随手扔在地板上,与整齐地把它们放入抽屉整理的区别。在本节中,我们将探讨数组(Arrays)和记录(Records)。
1. 什么是数据结构?
简单来说,数据结构是一种用于组织、处理、检索和存储数据的专门格式。
比喻:想象你是名图书管理员。如果你把每一本书都随意丢在房间中央堆成一座山,你需要花几个小时才能找到特定的一本书。然而,如果你使用书架(数据结构),并按类型或作者进行分类,你就能在几秒钟内找到所需的书籍!
快速重温:
• 变量存储单个数据。
• 数据结构以有组织的方式存储多个数据。
2. 一维 (1D) 数组
一维数组就像学校走廊里的一排储物柜。每个储物柜都有一个号码,里面可以放一样物品。在程序设计中,数组中的所有项目通常必须是相同的数据类型(例如,全部为整数或全部为字符串)。
如何在数组中寻找内容(索引 Indexing)
要从数组中取出一个项目,我们使用它的索引(Index)。
关键规则:在大多数编程语言(以及 AQA 伪代码)中,我们从 0 开始计数,而不是 1!这是非常常见的错误,请务必多加留意。
示例:如果我们有一个名为 Names 的数组:
索引 0:"Alice"
索引 1:"Bob"
索引 2:"Charlie"
若要访问 "Alice",你会写成 Names[0]。
你知道吗?
从 0 开始计数称为零基索引(Zero-based indexing)。计算机科学家这样做是因为它能让处理器在背后的数学运算变得更快!
重点总结:一维数组是一个相关数据项的列表,它们类型相同,并透过从 0 开始的单一索引编号进行访问。
3. 二维 (2D) 数组
如果一维数组是一排储物柜,那么二维数组就像整面墙的储物柜,有行也有列。你也可以把它想象成一个棋盘或一个电子表格。
在二维数组中寻找数据
要在二维数组中找到特定的数据,你需要两个索引编号:一个用于行(Row),一个用于列(Column)。我们通常将其写为 array[row][column] 或 array[row, column]。
比喻:想象一下电影院的座位表。要找到你的座位,你要先看行数(例如:第 5 行),然后看座位号码(例如:12 号)。
记忆小撇步:记住 "RC"(就像遥控车 Remote Control Car)——先 Row(行),再 Column(列)!
快速重温:
• 一维数组 = 简单的列表。
• 二维数组 = 带有行和列的表格或网格。
4. 记录 (Records)
如果觉得数组限制太多(因为它们只能存储同一类数据),不用担心!这正是记录(Records)派上用场的时候!
记录是一种可以存储一组相关项目的数据结构,其中每个项目都可以是不同的数据类型。我们称记录中的每个个别项目为字段(Field)。
现实生活示例:想象你正在编写一个追踪车库中汽车的程序。对于每辆车,你想存储它的品牌(字符串)、价格(实数)和车门数量(整数)。数组很难做到这一点,但记录可以!
课程示例:汽车记录
以下是记录如何在伪代码中定义:
RECORD Car
make : String
model : String
reg : String
price : Real
noOfDoors : Integer
ENDRECORD
重点总结:针对相同事务的列表,请使用数组;针对关于单一事物且包含不同细节的集合,请使用记录。
5. 为什么要使用数据结构?
你可能会想:“为什么我不能只用 20 个不同的变量?”嗯,使用数据结构会让你的代码更“干净”且易于管理。
• 效率:你可以使用迭代(Loops),只需三行代码就能遍历包含 1,000 个项目的数组。
• 组织性:它将相关数据放在一起,让程序更容易被人阅读和理解。
• 减少错误:当数据以结构化方式存储时,更不容易丢失数据轨迹。
要避免的常见错误
• 从 1 开始计数:请务必记住,数组中的第一个项目位于索引 \( 0 \)。
• 超出范围(Out of Bounds):如果你的数组有 5 个项目,最后一个索引是 4。如果你尝试访问索引 5,程序将会崩溃!这被称为“索引超出范围”错误。
• 在数组中混用类型:记住数组中的所有项目必须是相同的类型(例如:全部为整数)。如果你需要不同的类型,请使用记录。
总结:核心概念
• 数据结构能组织数据,使程序更有效率。
• 一维数组就像列表;它们使用一个从 0 开始的索引。
• 二维数组就像表格;它们使用两个索引(行和列)。
• 记录用于透过字段存储关于单一对象,包含不同类型数据的集合。
如果刚开始觉得这些内容有点复杂,别担心!只要多练习编写使用数组的小程序,你就会越来越上手。你做得到的!