Algorithm 演算法
演算法:解決問題的方法。遵循演算法的步驟執行,可以正確解決問題。
演算法與電腦關係:
電腦功能運作背後,都是遵循著演算法執行的。資訊科技領域中,演算法有嚴謹的定義,以確保能正確執行、有效解決問題。
演算法的功能:
1.明確地告訴電腦,碰到什麼狀況時,應該如何反應或執行什麼步驟。
2.由於每個人思考方式不同,針對同樣問題,會設計出不同演算法。
3.不同的演算法,會影響電腦處理問題的結果與效率。
演算法五大特性:
1. 輸 入:可有多個輸入資料,或是沒有輸入資料。
2. 輸 出:必須至少有一個輸出結果。
3. 明確性:每個指令必須明確,不可模稜兩可。
4. 有限性:執行演算法,必須在有限步驟內結束。
5. 有效性:又稱可行性,演算法中的每個命令都必須是可執行的步驟,用紙筆也能推演完畢,以確定能解決問題。
演算法的表達方式:演算法沒有固定呈現方式,只要能清楚表達,並符合演算法五大特性即可。
編碼 |
常見的 |
說明 |
範例 1 ( 求甲、乙兩數相加之總和。) |
範例 2 (依據「是否下雨」來決定行程。) |
1 |
文字 |
用一般語言文字來描述執行步驟。 |
步驟1. 輸入「數字甲」。 |
步驟1. 判斷是否下雨。 |
2 |
流程圖 |
用圖示符號來描述執行過程。 |
||
3 |
虛擬碼 |
用類似程式語言的方式來描述執行步驟。 |
(1) input 甲 |
(1) if 下雨 |
流程圖符號:
|
符號 |
名稱 |
說明 |
1 |
開始/結束 |
流程的開始或結束 |
|
2 |
輸入/輸出 |
輸入或輸出資料 |
|
3 |
處理程序 |
要執行或處理的程序 |
|
4 |
決策判斷 |
針對條件進行判斷,以決訂執行的流向。 |
|
5 |
流向線 |
流程進行的方向 |
|
6 |
迴圈(重覆) |
迴圈變數初值與終值的描述 |
|
7 |
連接 |
流程的連結點 |
|
8 |
註解 |
表示附註說明之用 |
|
9 |
副程式 |
已定義流程的組合 |
|
10 |
文件 |
輸入或輸出文件 |
電腦資料演算法
演算法 |
文字說明 |
概念影片 |
觀念練習 |
題目練習-康軒 |
題目練習-翰林 |
||
排序 |
選擇排序法 |
概念是反覆從未排序的資料中取出最小的元素,加入到另一個資料的最後 一項 ,當所有元素都取出後,它的結果就是已排序的資料。 規則 1.將數值分為「已排序」和「未排序」兩部分。 2.在「未排序的數字」中找到「最小值」,和「未排序的第 1 個數」交換,完成 1 個數的排序。 3.重覆2,直到完成排序。
|
選擇排序法概念影片 1資訊科技-選擇排序法(翰) 2.選擇排序法(翰) 3.選擇排序法(康) |
完成天平遊戲,並截圖存檔。 2.[Windows 鍵]+ Shift + S
選擇排序法演練 |
|
選擇排序法 |
|
插入排序法 |
概念是逐一取出未排序資料中的元素,再從另一個已排序資料中,由前往後找到適當的位置插入,就完成資料的排序。 規則 1.將最前端的數當作「已排序」,把數值分為「已排序」和「未排序」兩部分。 2.將「未排序的第 1 個數」,由後往前逐一和「已排序」的數值比較,並插入到適當的位置。 3.重覆2,直到完成排序。 |
插入排序法概念影片 1Insert-sort with Romanian folk dance(翰) 2The Sound of Sorting-Insertion Sort(翰) 3.插入排序法(康) |
插入排序法演練 |
|
插入排序法 |
||
氣泡排序法 |
概念是每回合從原始資料最左邊的元素開始,將相 鄰的兩個元素做比較,並按照由小至大排序,依序比較完所有相鄰的元素後,即可得到該回合 最大的元素,並且不列入下個比較的回合,直至所有回合皆比較完。 規則 1.將數值分為「已排序」和「未排序」兩部分。 2.在「未排序」的數值中,將最後一個數值設為「比較位置」,並和前方相鄰的數比較,若前數>後數,兩數交換。 3將步驟2中較小的數,設為新的「比較位置」,再與前方的數比較、交換。 4重複3,當最小的數移動到最前面,完成此數的排序,結束一輪掃描。 5重複2、3、4,依次完成所有數值的排序。 |
1.氣泡排序法(康) |
氣泡排序法演練 |
檔名: |
|||
小試身手-神廟試煉 檔名: |
|||||||
實作活動-歌唱比賽 檔名: |
|||||||
3分鐘搞懂, 泡沫排序法vs快速排序法! -Bubble Sort vs Quick Sort |
|||||||
搜尋 |
線性搜尋法/循序搜尋法 |
用來搜尋特定資料的方法。從第一個資料開始取出,依序逐一與「目標資 料」相互比較,直到找到所要的元素或所有資料均尋找完為止。
規則 1.從第一筆資料開始比較。 2.若資料=目標,結束搜尋。 3.若資料≠目標,比較下一筆資料。 4.重複2∼3,若到最後一筆資料仍未找到, 代表無目標資料,並結束搜尋。 |
循序搜尋法概念影片 2LINEAR search with FLAMENCO dance(翰) 3.循序搜尋法(康) |
檔名: <截圖> 2.[Windows 鍵]+ Shift + S |
檔名: |
循序搜尋法 |
|
二元搜尋法 |
對於已排序資料進行折半搜尋,如果要搜尋的元素比中間值大,那另一半 比中間值小的元素就不用再比較,待搜尋的資料馬上減少一半,反覆進行此步 驟,就可以快速找到「目標資料」。
規則 1.資料必須已排序。 2. 找出「待搜尋範圍」的「中間位置值」: ● 奇數個資料,取正中間位置的資料。 ● 偶數個資料,取中線左方位置的資料。 3.比較: (1) 若中間位置值=目標,結束搜尋。 (2) 若中間位置值≠目標,將「中間位置值與另一側的資料」排除。 4.重複2∼3,若已排除所有資料仍未找到,代表無目標資料,並結束搜尋。 |
二元搜尋法概念影片 2BINARY search with FLAMENCO dance 3.二元搜尋法(康) |
二元搜尋法演練 |
保存期限 檔名: |
二元搜尋法1 二元搜尋法2 |
||
實作活動-發票對獎器 檔名: |
海戰棋遊戲補充說明:
想一想:
關卡 |
想一想 |
第一關、第二關 |
有什麼猜的策略嗎? |
第三關、第四關 |
有情報員的提示,你猜了幾次? |
第五關、第六關 |
分了十個港口,依規則計算必定縮小範圍,你猜了幾次? |
搜尋法:搜尋就是在一堆資料中,找出特定資料。
解題:
關卡 |
搜尋法 |
策略 |
比較 |
第一關、第二關 |
線性搜尋法 |
線性搜尋法: 資料呈現不規則排序,因此過關所需要的時間無法預測。 運用時機: 1. 適用狀況:
資料沒有經過排序,沒有規則可循時。
|
二分搜尋法快於線性搜尋法? |
第三關、第四關 |
二分搜尋法 |
二分搜尋法: 例如:進行「終極密碼」遊戲,一人為主持人,選定一個介於 1 ∼ 99 的數字為謎底,另一人為玩家來猜數字。每當玩家說出一個數字後,主持人就回覆 「太大」、「太小」或「答對」。 1資料必須已排序。
適用狀況:
|
雜湊搜尋法一定比二分搜尋法、線性搜尋法快? |
第五關、第六關 |
雜湊搜尋法 |
雜湊搜尋法: |
|