iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
1

資料結構 - 陣列和雜湊

資料結構,也是軟體工程很重要的概念,
貫串所有不同領域的應用,因為這個概念探討的,
是資料儲存的問題。
資料結構的發展非常長遠,所有有非常多種的資料結構,
筆者今天會介紹最基本要會的兩個常用結構方式,
明天會講解比較進階但也時常用到的結構方式。

陣列 ( Array )

陣列是我們最常應用的資料儲存方式,
因為它能儲存『 多筆資料於一個大資料中 』,
就像是一個大書櫃,擁有很多櫃子,
每個櫃子都能存放不同的東西。
下面是一個簡單的 array 例子:

names = ["john","may","asaki"]

我們有一個『 names 』的變數,
他是一種『陣列』,裡面儲存了 john, may, asaki,三筆資料。
而我們要怎麼使用他呢?
最常見的使用方式,是用『指定第幾個位置』的方式來使用,
聰明的讀者一定想到了,第幾個位置的算法,會從 0 開始算喔!
參考以下的例子:

puts names[1]

這段程式,會印出 “may”,而不是 “ john ”喔!!
所以用圖形來表示,可以這樣說:
https://ithelp.ithome.com.tw/upload/images/20181026/20107758pIptdLzwhM.png
在 ruby, python 等程式語言中,
同一個陣列可以儲存不同資料類別的資料,
例如:


bad_man = {
	name: “lo”
	height: 180
}

garbage = ["Green", "Blue", 87, bad_man]

上面這個陣列中,garbage 有 Green, Blue 兩筆字串,
87 一筆整數,bad_man 一個物件。
這是個很重要的概念喔!!
陣列裡也是可以放進,具有複雜結構的變數類資料。

但在 java 這種比較嚴格( GY )的程式語言中,
會限制陣列只能儲存『同一種資料類型的資料』,
那就不能做到像上面的結構。

陣列通常都會有許多種的函式可以使用,
例如我想要取得陣列的長度、將一筆資料放進陣列的最後方、
將陣列重複的資料情除等等等...
不同的語言幾乎都有針對你的需求,提供方便的函式,
所以在寫程式的時候,多釐清自己的需求,並下對關鍵字,
就可以找到好用的資料囉~例如” ruby array get length “

雜湊 ( Hash )

雜湊這個資料結構方式,其實之前大家就有遇過了,
物件,就是一種雜湊的結構方式。
雜湊是建立不同的索引,也就是『key』,
透過 key,去取得對應的值,也就是『 value 』,
而因為是索引,所以 key 在每個雜湊中,
『只能有一個』『只能有一個』,雖然很重要,但我懶得說三次,
因此雜湊很適合儲存,『具有許多唯一屬性』的資料,
我們來看看,一個雜湊的範例:

train = {
	people: 100,
	name: "自強",
	time: "2018-10-10"
}

用圖像表示,就會像:

https://ithelp.ithome.com.tw/upload/images/20181112/20107758OuzhAySWcE.png

而雜湊除了可以有邏輯的結構化資料,
也提供更好的資料搜查效率喔!!
更詳細的解說我們會在之後的演算法篇章中,做更詳細的說明。

如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~


上一篇
[Day11] Object 物件
下一篇
[Day13] 資料結構 - 樹和堆疊
系列文
菜鳥後端工程師的第一門課30

尚未有邦友留言

立即登入留言