看圖輕鬆理解資料結構與演算法系列(陣列)

超人汪小建發表於2018-07-23

前言

推出一個新系列,《看圖輕鬆理解資料結構和演算法》,主要使用圖片來描述常見的資料結構和演算法,輕鬆閱讀並理解掌握。本系列包括各種堆、各種佇列、各種列表、各種樹、各種圖、各種排序等等幾十篇的樣子。

陣列

陣列是最熟悉也是最基礎的一種結構了,有限個相同資料型別的元素按順序排列的集合為陣列。陣列的資料是連續的,有上界下界,在其中的元素都有屬於自己的索引值,即下標,通過這些下標就能定位到陣列值。

根據維度的不同可以將陣列分為一維陣列、二維陣列、三維陣列等等,以此類推。

一維陣列

建立一個長度為10的陣列,

image

如果將 11,22,33,44四個數字放到陣列中,

image

如果將 "the","monster","is","coming"四個字串放到陣列中,

image

找陣列的下標為0和3儲存的字串,

image

陣列大小為10,則下標範圍為0到9,如果超出範圍則越界,導致錯誤,

image

二維陣列

二維陣列也稱為矩陣,因為是二維的,所以需要兩個下標才能確定一個元素,即行下標和列下標。建立一個3行10列的二維陣列(矩陣),一共可存放30個元素,

image

"the","monster","is","coming"四個字串分別放到陣列(0,1)(2,2)(2,6)(1,4)四個座標上,

image

找陣列中(2,6)(1,4)座標中儲存的字串,

image

三維及更高維陣列

三維陣列即由三個維度組成的陣列,是最常見的多維陣列,由三個不同的下標參量去描述陣列中的元素。

按照正常思維,我們常常會用現實世界的三維空間來對應三維陣列以進行理解,但我不建議通過這樣來對映,這樣的思維方式不助於理解更高的維度,因為你很難用現實世界來想象四維五維或更高維。

所以建議以索引的形式來理解,每個維度都可以看成是一層索引,三維的情況則可以看成如下,

image

比如將"the"放到(0,1,2)座標中,

image

更高維度則可以繼續往上抽取一維,類似樹結構。

-------------推薦閱讀------------

我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)

為什麼寫《Tomcat核心設計剖析》

我的2017文章彙總——機器學習篇

我的2017文章彙總——Java及中介軟體

我的2017文章彙總——深度學習篇

我的2017文章彙總——JDK原始碼篇

我的2017文章彙總——自然語言處理篇

我的2017文章彙總——Java併發篇


跟我交流,向我提問:

看圖輕鬆理解資料結構與演算法系列(陣列)

歡迎關注:

看圖輕鬆理解資料結構與演算法系列(陣列)

相關文章