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