基本演算法介紹-排序


基本演算法的介紹課程脈絡

 


演算法與生活連結

在日常生活中,像這樣的演算法可說是隨處可見。而在文章一開始提到,我們再接觸程式時常聽到「演算法」的這個詞,通常是指把這些步驟具體寫成程式,用來達成特定目的的過程。這些演算法簡單的可能像是把一堆數字排序,複雜的可能如大家每天用的 Facebook 所用不斷更新的 News feed 演算法。


排序演算法(Sorting algorithms)

排序法,就是將一堆沒有排序過的數字由小到大(或大到小)排列好的演算法

日常生活的應用

範例1-排身高.排成績

範例2-玩撲克牌

假設有十三張的撲克牌如下圖:

我們可以由左而右依序排入牌面點數為 A、 2、3、4、5、6、7、8、9、10、J、Q、K的,也就是從最小點數A開始找起,找到A後,將它放左邊數來第一個的位置,找到2後,將它放到左邊數來第二個位置,其餘的點數依照相同作法,如下面兩張圖所示:

上述將這十三張牌由小排到大的方法就是演算法中的排序(Sorting)

提問:

思考問題:


排序(sort)演算法種類

已知的排序演算法超過幾十種,常見的排序演算法有氣泡排序法(bubble sort)、插入排序法(insertion sort)、合併排序法(merge sort)、選擇排序法(selection sort)、堆排序法(heap sort)、快速排序法(quick sort)

牛刀小試

活動設計1-不同排序演算法動畫


氣泡排序法(bubble sort)

教學影片

氣泡排序(Bubble Sort),是一種資訊科學領域較簡單的排序演算法。
它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。
這個演算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端(昇冪或降冪排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”氣泡排序演算法的原理如下:

 

  • 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個。
  • 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  • 針對所有的元素重複以上的步驟,除了最後一個。
  • 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數位元需要比較。

 

相關教學影片

影片來源:http://peanut.lkjh.tyc.edu.tw/moodle/course/view.php?id=2

活動設計2-氣泡排序(Bbble sort)演算法視覺工具

https://www.khanacademy.org/computing/computer-science/algorithms

思考問題

想想看氣泡排序法有何特色呢?

參考資料

http://peanut.lkjh.tyc.edu.tw/moodle/course/view.php?id=2

ttps://www.kidscoding8.com/76754.html

https://scratch.mit.edu/discuss/m/topic/286327/

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

https://www.george.tw/2019/04/27/bubble-sort/

http://www.scratchkungfu.com/

https://bianchengla.youyu.im/topics/21

https://kknews.cc/education/nrq5br8.html

https://kknews.cc/code/38bk498.html


氣泡排序法(bubble sort)實作篇(老師可依學生程度實作.此為高一課綱)

問題抽象化

第一輪排序:在左端的第1張紙牌 上方放置紅色瓶蓋標記為j. 在第5張紙牌上方放置藍色瓶蓋標記為i. 然後從右至左依序查看i和i-1位置相鄰的的兩張紙牌並比較兩張牌的大小.如果紙牌i小於紙牌i-1則交換兩者的位置.然後將藍色瓶蓋向左移動1步(i=i-1).重複上述操作直到藍色瓶蓋與紅色瓶蓋碰在一起.將j位置的紙牌翻開到此結束第一輪排序.最後一張紙牌2點被移動到正確位置

第二輪排序:將紅色瓶蓋向右移動1步(j=j+1). 將藍色瓶蓋移動到最右邊(i=5).然後依照前述的步驟進行比較及交換.直到藍色瓶蓋與紅色瓶蓋碰在一起將j位置的紙牌翻開.到此結束第二輪排序.紙牌4點被移動到正確位置


第三輪排序: 重複上述的排序步驟. 紙牌6點被移動到正確位置


第四輪排序: 重複上述的排序步驟 紙牌7點被移動到正確位置.而紙牌8點也處於正確位置


整個氣泡排序過程結束 5張紙牌已經按照從小到大的順序排列完畢