陣列資料結構的概念與應用
陣列資料結構的概念與應用課程脈絡
什麼是資料結構(Data Structure)?
資料結構是是電腦中儲存、組織資料的方式.其的用途是讓我們程式設計的時候,可以簡便地、快速地存取資料,以利資料處理。
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
思考問題:使用清單(陣列資料結構)設計程式有何好處?