曹曉敏



前段時間,嶺童小子學以致用,通過編程完成了每周貼紙數量的統計和排序,不僅提高了工作效率,還大大降低了錯誤率。老師表揚他,同學們也向他豎起大拇指。面對大家的夸獎,嶺童小子別提有多開心了。得意的同時,他也暗下決心:一定要好好學習,更加努力!
星空太了解嶺童小子了。這天下午,星空主動找嶺童小子聊天。
小子,我知道你現在特別想學習更多的算法,提高自己的編程能力,對嗎?
對呀,真不愧是我兄弟!
其實,除了桶排序,還有其他算法可以對貼紙數量進行排序。你想不想學?
當然想啊??欤屛议L長見識!
好。現在你依次告訴我5個需要排序的數據。
1、7、3、5、9。
看好了,小子。從大到小排序開始!
只見計算機屏幕上的數據上下跳動,幾秒后,數據就從大到小排列好了。
“真厲害!”嶺童小子忍不住歡呼起來。星空是怎么做到的呢?
曉敏老師:
排序的算法有很多,讓我們一起來看看星空的思路。
第一步,對數列“1、7、3、5、9”進行第一趟比較。首先,把第一位的數據1與第二位的數據7比較,如圖1。
因為第二位比第一位的數據大,所以交換這兩個位置上的數據,交換以后的新數列為:7、1、3、5、9。接著,把第二位的數據1與第三位的數據3比較,如圖2。
因為第三位比第二位的數據大,所以再次交換這兩個位置上的數據,交換以后的新數列為:7、3、1、5、9。然后,按照相同的方法,把第三位與第四位的數據比較,第四位與第五位的數據比較,并調整位置。
這一趟一共比較了4次,調整后的新數列為:7、3、5、9、1。此時,數列中最小的數據“1”被排到了最后。
第二步,對新數列“7、3、5、9、1”進行第二趟比較,并調整位置。首先,把第一位的數據7與第二位的數據3比較,如圖3。
因為第二位比第一位的數據小,所以不需要交換,數列依然為:7、3、5、9、1。然后,把第二位與第三位的數據比較,第三位與第四位的數據比較,并調整位置,調整以后的新數列為:7、5、9、3、1。
因為第五位的數據“1”是經過排序后的最小數據,所以,不需要再比
較第四位與第五位的數據。
第二趟一共比較了3次,此時,數列中的“3”被排到了倒數第二的位置。
對新數列進行第三趟、第四趟比較后,這個數列就按照從大到小的順序排列好了。
你們看懂了嗎?這里提供關鍵代碼,如圖4,同學們可以在理解這個算法邏輯的前提下,自己研究具體代碼。
因為每次比較、調整位置,較小的數都會往后排列,較大的數往前排列,就像泡泡往上冒,因此這個算法被稱為“冒泡排序”。關于排序的算法有很多,我們遇到問題時,可以根據實際需要選擇合適的、最優的算法。
曹曉敏 :湖南省特級教師、省優秀科技輔導員,長沙市首批卓越教師、市骨干教師。長沙市芙蓉區馬坡嶺小學信息技術教師。