前言
推出一個新系列,《看圖輕鬆理解資料結構和演算法》,主要使用圖片來描述常見的資料結構和演算法,輕鬆閱讀並理解掌握。本系列包括各種堆、各種佇列、各種列表、各種樹、各種圖、各種排序等等幾十篇的樣子。
陣列
陣列是最熟悉也是最基礎的一種結構了,有限個相同資料型別的元素按順序排列的集合為陣列。陣列的資料是連續的,有上界下界,在其中的元素都有屬於自己的索引值,即下標,通過這些下標就能定位到陣列值。
根據維度的不同可以將陣列分為一維陣列、二維陣列、三維陣列等等,以此類推。
一維陣列
建立一個長度為10的陣列,

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

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

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

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

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

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

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

三維及更高維陣列
三維陣列即由三個維度組成的陣列,是最常見的多維陣列,由三個不同的下標參量去描述陣列中的元素。
按照正常思維,我們常常會用現實世界的三維空間來對應三維陣列以進行理解,但我不建議通過這樣來對映,這樣的思維方式不助於理解更高的維度,因為你很難用現實世界來想象四維五維或更高維。
所以建議以索引的形式來理解,每個維度都可以看成是一層索引,三維的情況則可以看成如下,

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

更高維度則可以繼續往上抽取一維,類似樹結構。
-------------推薦閱讀------------
我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:

歡迎關注:
