演算法是什麼呢?
電腦用來處理任務需要對應精巧的程式,這些程式我們通常稱為演算法。
他的特性有以下五點:
- 輸入(必需有資料)
- 輸出(必需有資料)
- 明確性(有明確的規則)
- 有限性(必需是可以結束的)
- 有效性(可以有依據的追蹤)
首先,我們利用各種排序方法來簡單介紹什麼是演算法,例如一串凌亂的數字8,5,10,1,7,經過排序變成 1,5,7,8,10
比較常見的排序法如下:選擇排序法,插入排序法,循序搜尋法,二元搜尋法,泡沫排序法,等等
(一)選擇排序法 selection sort algorithm
反覆從未排序的資料中取出最小的元素,加到己排序數列的最後一項,待所有原始資料中的元素都取出後,己排序的資料就是結果。
原始資料 8,5,10,1,7
- 第一回合:找出最小的1,加到空的數列
- 第二回合:找出最小的5,加到1之後
- 第三回合:找出最小的7,加到5之後
- 第四回合:找出最小的8,加到7之後
- 第五回合:找出最小的10,加到8之後
https://www.youtube.com/watch?v=Ns4TPTC8whw
國外竟然有人把它編成舞蹈,而且瀏覽人數也上百萬,真的很厲害啊!
用scratch 來寫選擇排序法
https://scratch.mit.edu/projects/522842268
建立清單:(1)己排序資料,(2)原始資料
建立變數:建立兩個數變(1)資料位置,(2)最小值位置
設定函式積木:名稱為[找出最小值]
程式開始囉:
首先先清除所有資料,再亂數(1到10)填入原始資料
點了角色之後,左邊的[己排序資料]清空。執行[找出最小位置]的副程式。找出[最小值位置]之後把資料換到己排資料。
找出最小值位置的副程式,先設定位置為1,再指向位置為2,再指向位置3,一直到位置5。
從原始資料的位置中找出最小的位置
以上程式况
(二)插入排序法 insertion sort algorithm
逐一從未排序的原始資料中取出元素,再從己排序數列由前往後找到適當的位置插入,如果遇到大於自己的元素就插入此元素之前,否則就插入在己排序數列的最後一項。
原始資料 8,5,10,1,7
- 第一回合:取出第一個8,加到空的數列
- 第二回合:取出第二個5,加到8之前
- 第三回合:取出第三個10,加到8之後
- 第四回合:取出第四個1,加到5之前
- 第五回合:取出最後一個7,加到5之後
插入排序法的舞蹈
https://www.youtube.com/watch?v=ROalU379l3U
插入排序法 scratch程式
https://scratch.mit.edu/projects/526357462/
(三)氣泡排序法
從資料的最左邊開始,將相鄰的兩個元素做比較,由小至大排序,依序比較完所有的元素後,即可得到該回合的最大元素。
再重複以上步驟,直到全數排完。
https://scratch.mit.edu/projects/157362689/
https://www.youtube.com/watch?v=lyZQPjUT5B4
各種排序法的比較:
https://www.youtube.com/watch?v=ZZuD6iUe3Pc
有沒有人跟我一樣很喜歡看這種影片的呢?
留言列表