Thinker
@Thinker
說
Sun, Nov 21, 2021 4:41 AM
Sun, Nov 21, 2021 4:45 AM
9
2
剛剛教了 Junior Programmer 演算法第一課, bubble sorting.
一時興趣, 白板上垂直寫了一串數列, 請他用交換位置的方式排序. 他瞬間就解了.
然後再限制他一次只能看兩個數字, 而且無法記憶看過的數字的情況下(或者數列長達幾萬個數字), 問他要怎麼排列. 當然如預期的卡在那邊不會排.
接下來就是請他從頭掃到尾, 比較相鄰數字, 把較小的數字交換到前面. 掃個幾輪之後, 數字都排好了. 這就叫 bubble sorting. 打完收工.
較小的數字就是比較輕的氣泡, 我們不斷讓氣泡往上浮, 所以叫 bubble sorting.
Thinker
@Thinker
說
Sun, Nov 21, 2021 5:05 AM
最後加碼, 請問最糟的狀況, 要掃幾輪才能排好? n - 1 輪, 最差的狀況是最小的數子在數列的最後面, 每次浮上來一個位置, 所以要 n - 1 輪才會浮到上, 其它數字要往上浮或往下沈所需要輪次不會比它大, 所以這是最差的狀況.
Thinker
@Thinker
說
Sun, Nov 21, 2021 5:06 AM
感覺基礎的演算法還是可以很歡樂的完成
爽叮噹
@clsung
Sun, Nov 21, 2021 6:58 AM
六歲?
pingooo
@pingooo
Sun, Nov 21, 2021 12:51 PM
Bubble-sort with Hungarian ("Csángó") folk dance
Thinker
@Thinker
說
Sun, Nov 21, 2021 5:18 PM
對, 六歲 Junior Programming. 跳舞的方式很適合小朋友完.
Thinker
@Thinker
說
Sun, Nov 21, 2021 5:23 PM
我覺得困難點在於要先讓小朋友了解電腦的限制. 例如, 為什麼不能直接找到最小的交換到前面就好? 把電腦 (CPU) 一次只能看到有限幾個資料 (instruction 的 operand) 的觀念傳達給小朋友, 而演算法要基於這個限制. 其實人腦也是一次能處理有限的資料.
爽叮噹
@clsung
Mon, Nov 22, 2021 2:09 AM
這對老師比較挑戰,讓我學習一下,感謝
載入新的回覆
一時興趣, 白板上垂直寫了一串數列, 請他用交換位置的方式排序. 他瞬間就解了.
然後再限制他一次只能看兩個數字, 而且無法記憶看過的數字的情況下(或者數列長達幾萬個數字), 問他要怎麼排列. 當然如預期的卡在那邊不會排.
接下來就是請他從頭掃到尾, 比較相鄰數字, 把較小的數字交換到前面. 掃個幾輪之後, 數字都排好了. 這就叫 bubble sorting. 打完收工.
較小的數字就是比較輕的氣泡, 我們不斷讓氣泡往上浮, 所以叫 bubble sorting.