基本演算法介紹-排序
基本演算法的介紹課程脈絡
演算法與生活連結
在日常生活中,像這樣的演算法可說是隨處可見。而在文章一開始提到,我們再接觸程式時常聽到「演算法」的這個詞,通常是指把這些步驟具體寫成程式,用來達成特定目的的過程。這些演算法簡單的可能像是把一堆數字排序,複雜的可能如大家每天用的 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/
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張紙牌已經按照從小到大的順序排列完畢