45

看图轻松理解数据结构和算法:数组

 5 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5MzA1Mzc3Nw%3D%3D&%3Bmid=2247484602&%3Bidx=1&%3Bsn=244cc963d228f85f24ae1fb0f26ec0b8&%3Bchksm=a69da98491ea2092437caaf78419ffb68965ba6a2862701396653fa6bfdfc8c9502bf4a
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等等几十篇的样子。

数组

数组是最熟悉也是最基础的一种结构了,有限个相同数据类型的元素按顺序排列的集合为数组。数组的数据是连续的,有上界下界,在其中的元素都有属于自己的索引值,即下标,通过这些下标就能定位到数组值。

根据维度的不同可以将数组分为一维数组、二维数组、三维数组等等,以此类推。

一维数组

创建一个长度为10的数组,

NZnuuaN.jpg!web image

如果将 11,22,33,44 四个数字放到数组中,

32URjuy.jpg!web image

如果将 "the","monster","is","coming" 四个字符串放到数组中,

I7bAfyN.jpg!web image

找数组的下标为0和3保存的字符串,

6Rj6FjB.jpg!web image

数组大小为10,则下标范围为0到9,如果超出范围则越界,导致错误,

EB3qMjV.jpg!web image

二维数组

二维数组也称为矩阵,因为是二维的,所以需要两个下标才能确定一个元素,即行下标和列下标。创建一个3行10列的二维数组(矩阵),一共可存放30个元素,

rABJ3uF.jpg!web image

"the","monster","is","coming" 四个字符串分别放到数组(0,1)(2,2)(2,6)(1,4)四个坐标上,

77zU3eB.jpg!web image

找数组中(2,6)(1,4)坐标中保存的字符串,

AJZ7n2b.jpg!web image

三维及更高维数组

三维数组即由三个维度组成的数组,是最常见的多维数组,由三个不同的下标参量去描述数组中的元素。

按照正常思维,我们常常会用现实世界的三维空间来对应三维数组以进行理解,但我不建议通过这样来映射,这样的思维方式不助于理解更高的维度,因为你很难用现实世界来想象四维五维或更高维。

所以建议以索引的形式来理解,每个维度都可以看成是一层索引,三维的情况则可以看成如下,

IVba2yN.jpg!web image

比如将"the"放到(0,1,2)坐标中,

eIJfAbn.jpg!web image

更高维度则可以继续往上抽取一维,类似树结构。

--------------------------------------

跟我交流:

ruMri2J.png!web

-------------推荐阅读------------

我的开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)

为什么写《Tomcat内核设计剖析》

2017文章汇总——机器学习篇

2017文章汇总——Java及中间件

2017文章汇总——深度学习篇

2017文章汇总——JDK源码篇

2017文章汇总——自然语言处理篇

2017文章汇总——Java并发篇


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK