陣列資料結構的概念與應用


陣列資料結構的概念與應用課程脈絡

什麼是資料結構(Data Structure)?

資料結構是是電腦中儲存、組織資料的方式.其的用途是讓我們程式設計的時候,可以簡便地、快速地存取資料,以利資料處理

WIKI

1.生活中的應用實例-堆疊(Stack)資料結構)後進先出(Last-In-First-Out, LIFO)

(1)自助餐店盤子的擺放

(2)書店擺在桌上的書堆

 

活動設計1-理解堆疊(Stack)資料結構概念

利用偷插電的程式來將實際的抽象陣列概念具體示範堆疊的Push與Pop。 透過Push將資料送內Stack堆疊中,利用Pop將堆疊內的資料取出。

將數字1,2,5,6,11,13,依序填入及按下[Push] 按下[Pop]即可依序將13,11,6,5,2,1從堆疊中取出

參考網站

2.資料結構的重要性

(1)資料結構和演算可以說是程式開發的兩個重要理論

(2)演算法簡單來說就是解決問題的步驟,而資料結構對資料有系統的安排儲存

(3)有效率演算法必定用對資料結構,來降低程式開發的複雜度提升時間與空間的執行效率

「程式=演算法+資料結構」

牛刀小試-老鼠走迷宮

說明

解說:

深度優先搜尋法找出下圖的所有節點順序

假設起始點為 A,且每一節點由左至右的順序來搜尋下個節點,則結果為: A, B, E, F, D, C, G

參考資料:http://simonsays-tw.com/web/DFS-BFS/DepthFirstSearch.html

經典遊戲時間


陣列(Arrays)資料結構(Data Structure)

1.為何要使陣列(Array)資料結構(Data Structure)

教學影片

解說

變數雖能存放資料加以處理,但是如果遇到大量的資 料,仍需要較好的方法來儲存、管理這些變數。若以 紙張比喻為變數,紙上的文字就是資料,當紙張越來越多(變數越來越多),如果沒有好的方法來管理紙
張,那麼要查詢、修改資料將是件困難的是,

2.陣列(Array)的生活應用

(1)收納盒

陣列你可以把它想像成是一個很多格子的收納盒,而收納盒可以裡面可以存放如「整數」、「字串」...的資料。

(2)電影院劃位

電影院的每個位置都有對應的號碼

(3)大樓信箱

Q:想想看日常生活還有哪些使用陣列的應用呢?

3.陣列(Arrays)資料結構(Data Structure)概念

教學影片

 

陣列(Array)是一組相同型態的連續變數(變數的集合),它們使用同一個變數名稱,另外用一個索引值(index)來指定使用第幾個變數來存取陣列內容

簡單說陣列是程式中儲存東西的一種容器,我們可以想像成一排已經編號好的櫃子。每一個櫃子上的編號我們稱為「索引值」,而櫃子裡的物品我們稱為「元素」

(索引值Index,通常程式語言中這個編號通常從 0 開始)

範例:寶可夢神奇寶貝

例如:假設神奇寶貝大師小明在一個名叫 Pokemons 的陣列裡依序放入他的神奇寶貝們,我們來複習一下陣列、元素、索引值的關係:

補充說明:

一維陣列

二維陣列

4.變數及陣列與電腦記憶體關係

(1)變數的內容隨機存放在記憶體中不同的位置

 

 

(2)陣列中的各個內容(元素)依照次序存放在連續的記憶體位置


Scratch的陣列使用

Scratch的陣列使用是以清單(list)表示「索引值」(Index,第1項 開始)

2.0版

思考問題:紀錄100個學生的身高,並計算平均值,該怎麼設計?

資料引用:http://mail.wcjs.tc.edu.tw/~aher/modules/tad_book3/pda.php?&tbdsn=539

3.0版

 

 

活動設計2-清單的應用--貓咪說話

教學影片

不用清單方法

字串原始資料

你好

請問你是誰

你為什麼會在這裡?

如果沒事的話,可以離開這個房間嗎?

再不走,我就要生氣了!

使用清單方法

1.建立清單

2.清單初始化

3.添加字串到清單

4.利用變數index當「索引值」及迴圈依序取出清單內的字串.並輸出

 

資料來源:https://nkust.gitbook.io/csx/liao-de-cun

思考問題:使用清單(陣列資料結構)設計程式有何好處?