《计算思维与算法入门》 —2.2 常见的数据结构

举报
华章计算机 发表于 2019/12/09 17:23:39 2019/12/09
【摘要】 本节书摘来自华章计算机《计算思维与算法入门》一书中第2章,第2.2节,作者是赵军 等。

2.2    常见的数据结构

不同种类的数据结构适用于不同种类的程序应用,选择适当的数据结构是让算法发挥最大性能的主要因素,精心选择的数据结构可以给设计的程序带来更高效率的算法。然而,无论是哪种情况,数据结构的选择都是至关重要的。接下来我们将介绍一些常见的数据结构。

数组

“数组”结构其实就是一排紧密相邻的可数内存,并提供一个能够直接访问单个数据内容的计算方法。我们可以想象一下自家的信箱,每个信箱都有住址,其中路名就是名称,而信箱号码就是数组的下标(也称为“索引”),如图2-8所示。

 image.png

图2-8  数组结构与邮递信箱系统类似

邮递员可以按照信件上的住址把信件直接投递到指定的信箱中,这就好比程序设计语言中数组的名称表示一块紧密相邻的内存的起始位置,而数组的下标(或索引)则用来表示从此内存起始位置开始后的第几个内存区块。

数组类型是一种典型的静态数据结构,它使用连续分配的内存空间(Contiguous Allocation)来存储有序表中的数据。静态数据结构是在编译时就给相关的变量分配好内存空间。在建立静态数据结构的初期,必须事先声明最大可能要占用的固定内存空间,因此容易造成内存的浪费。优点是设计时相当简单,而且读取与修改数组中任意一个元素的时间都是固定的,缺点则是删除或加入数据时,需要移动大量的数据。

数组是一组具有相同名称和数据类型的变量的集合,并且它们在内存中占有一块连续的内存空间。数组可以分为一维数组、二维数组与多维数组等,它们的基本工作原理都相同。如果想要存取数组中的数据,需要配合下标值(index,或称为索引值)找到数组中指定位置的值。在图2-9中的Array_Name是一维数组,它是拥有5个相同数据类型数值的数组。通过名称Array_Name与下标值即可方便地存取这5个数据。

 image.png

图2-9  数组中数据存储的示意图

二维数组(Two-Dimension Array)可视为一维数组的扩展,都是用于处理数据类型相同的数据,差别只在于维数的声明。例如,一个含有m × n个元素的二维数组A(1:m, 1:n),m代表行数,n代表列数,A[4][4]数组中各个元素在直观平面上的具体排列方式可参考图2-10。

 image.png

图2-10  4 × 4的数组在直观平面上的排列方式

三维数组的表示法和二维数组一样,都可视为是一维数组的扩展或延伸,如果数组为三维数组,可以看作一个立方体。将arr[2][3][4]三维数组想象成空间上的立方体,如图2-11所示。

 image.png

图2-11  三维数组可以看成一个立方体


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。