close

演算法是什麼呢?

電腦用來處理任務需要對應精巧的程式,這些程式我們通常稱為演算法。

他的特性有以下五點:

  • 輸入(必需有資料)
  • 輸出(必需有資料)
  • 明確性(有明確的規則)
  • 有限性(必需是可以結束的)
  • 有效性(可以有依據的追蹤)

首先,我們利用各種排序方法來簡單介紹什麼是演算法,例如一串凌亂的數字8,5,10,1,7,經過排序變成 1,5,7,8,10

比較常見的排序法如下:選擇排序法,插入排序法,循序搜尋法,二元搜尋法,泡沫排序法,等等

 

(一)選擇排序法 selection sort algorithm

反覆從未排序的資料中取出最小的元素,加到己排序數列的最後一項,待所有原始資料中的元素都取出後,己排序的資料就是結果。

1234

567

891011

 

12131416

 

171819

原始資料 8,5,10,1,7

  • 第一回合:找出最小的1,加到空的數列
  • 第二回合:找出最小的5,加到1之後
  • 第三回合:找出最小的7,加到5之後
  • 第四回合:找出最小的8,加到7之後
  • 第五回合:找出最小的10,加到8之後

 

1

2

 

https://www.youtube.com/watch?v=Ns4TPTC8whw

國外竟然有人把它編成舞蹈,而且瀏覽人數也上百萬,真的很厲害啊!

3

用scratch 來寫選擇排序法

https://scratch.mit.edu/projects/522842268

 

建立清單:(1)己排序資料,(2)原始資料

1

建立變數:建立兩個數變(1)資料位置,(2)最小值位置

2

設定函式積木:名稱為[找出最小值]

 

3

程式開始囉:

8

 

0

首先先清除所有資料,再亂數(1到10)填入原始資料

5

點了角色之後,左邊的[己排序資料]清空。執行[找出最小位置]的副程式。找出[最小值位置]之後把資料換到己排資料。

6

找出最小值位置的副程式,先設定位置為1,再指向位置為2,再指向位置3,一直到位置5。

從原始資料的位置中找出最小的位置

7

以上程式况

(二)插入排序法 insertion sort algorithm

逐一從未排序的原始資料中取出元素,再從己排序數列由前往後找到適當的位置插入,如果遇到大於自己的元素就插入此元素之前,否則就插入在己排序數列的最後一項。

原始資料 8,5,10,1,7

  • 第一回合:取出第一個8,加到空的數列
  • 第二回合:取出第二個5,加到8之前
  • 第三回合:取出第三個10,加到8之後
  • 第四回合:取出第四個1,加到5之前
  • 第五回合:取出最後一個7,加到5之後

4

5

插入排序法的舞蹈

https://www.youtube.com/watch?v=ROalU379l3U

4

插入排序法 scratch程式

https://scratch.mit.edu/projects/526357462/

13

15

 

11

 

12

 

(三)氣泡排序法

從資料的最左邊開始,將相鄰的兩個元素做比較,由小至大排序,依序比較完所有的元素後,即可得到該回合的最大元素。

再重複以上步驟,直到全數排完。

S__21151953

S__21151955

 

https://scratch.mit.edu/projects/157362689/

 

https://www.youtube.com/watch?v=lyZQPjUT5B4

 

 

各種排序法的比較:

https://www.youtube.com/watch?v=ZZuD6iUe3Pc

 

5

有沒有人跟我一樣很喜歡看這種影片的呢?

 

arrow
arrow
    創作者介紹
    創作者 鄭正正 的頭像
    鄭正正

    鄭正正

    鄭正正 發表在 痞客邦 留言(0) 人氣()