蔡昊君
(鄭州市第一中學 河南鄭州 450007)
冒泡排序動態演示算法設計
蔡昊君
(鄭州市第一中學 河南鄭州 450007)
在傳統的教學方法中,針對冒泡算法的教學主要是通過PPT、圖解或者flash動畫進行講述的,但是在教學過程中,仍然難以取得一個良好的教學效果,針對這種情況,重新對冒泡算法進行了研究,并運用C#語言設計了一套冒泡排序動態演示程序,可以讓學生更加直觀的了解該算法的動態執行過程,并直接進行動態演示,進而能夠輕松的掌握冒泡排序算法的本質內容。
冒泡排序;程序;動態演示
作為計算機數據處理過程中經常會用的到的算法之一,冒泡排序無疑是十分經典的,在整個程序設計教學中都具有十分重要的意義。事實上,冒泡算法的基本思路是十分容易理解的,但是具體到實際的程序設計過程中取往往難以找到著手點,所以為了更加清晰、直白的將整個算法展現在學生面前,本人設計了一個冒泡排序的動態演示算法,能夠讓學生更加清晰的了解冒泡算法在執行過程中,程序的執行與所產生的變化。
冒泡排序是一種最基本的排序方法,因其簡單實用而被廣泛應用在實際編程中,所以在進行基礎編程教學中尤為重要。冒泡排序的具體過程是:假設要對數組A[1..n]中的元素進行非降序排序,則首先比較元素A[1]和A[2],若為逆序則將二者交換,然后比較元素A[2]和A[3],若為逆序則將二者交換,依次類推,直到比較最后兩個元素A[n-1]和A[n],稱為一趟“冒泡”,其結果是將數組中值最大的元素放到了整個序列的最后,而數組中值較小的元素都上升一個位置。然后再對剩余的A[1]到A[n-1]的元素進行第二趟“冒泡”,將具有次大值的元素放到A[n-1]的位置上。直到第n-1趟排序,在A[1]和A[2]之間進行“冒泡”后,排序完成。
冒泡排序是以交換為基礎的排序算法,若在某一趟排序中未發現元素進行交換,則說明所有元素都已有序,冒泡排序過程可在該趟排序后終止。因此,可設一個標志exchange,在每趟排序開始前,先將其置為false,若排序過程中發生了交換,則將其置為true,每趟排序結束時檢查exchange,若未曾發生過交換則終止算法,不再進行下一趟排序。用C#實現的冒泡排序程序如下:


窗體上共安排Panel控件的數量為三,其中一個是演示窗口,在程序運行過程中實時顯示代表排序數據的標簽控件,隨著排序的進行,標簽控件的顏色發生變化;命令按鈕全部放置在右邊的Panel控件上;最后一個Panel控件的作用是放置顯示每趟排序結果的容器。圖1為程序運行界面。

圖1 程序運行界面
本冒泡排序動態演示設計系統的演示由窗口上簽的顏色變換來達到演示效果,在整個程序中一共使用了三個定時器,一個定時器控件起延時的作用,另外兩個定時器控件分別控制外層循環和內層循環的實現。以下為部分程序代碼:
//以下為類中定義的變量private constint MAXNUMBERS=40;//可以設置的最大數組容量,最小容量為private int[]numbers=new int[1];//排序用的數組


本設計能是學生清晰的看見程序的語句執行情況和存儲單元變化的情況,有利于學生快速的掌握冒泡排序算法,而且使用這種動態演示方式進行學習不受時間、地點的約束,學生甚至可以自己在課下自己模擬該過程,這樣更有利于學生的自主學習,也可以充分的激發學生的自主學習能力和對于程序的激情,達到更好的教學效果。
[1]楊波,梁少林.C語言中冒泡排序算法的教學設計與分析[J].信息與電腦(理論版),2015(16).
[2]謝翠萍,陳家益,朱兵章.C語言中冒泡排序教學設計與分析[J].福建電腦,2013(05).
[3]郭亞慶,趙源.冒泡法排序的動態演示[J].湖北工業職業技術學院學報,2014(01).
[4]邵平.冒泡排序程序設計的探究式教學方法及其分析[J].玉林師范學院學報,2008(05).
[5]宋美英.基于C語言的冒泡排序算法探討[J].現代計算機(專業版),2011(29).
[6]FaltinN.Structure and Constraints inInteractive Exploratory Algorithm Learning,2002.
[7]CapposJ,Homer P.Ds Cats:Animating Data Structures for CS 2 and CS 3 Courses,http://www.cs.arizona.edu/dscats/dscatstechnical.pdf.2002.
[8]CHRISTOPHER D.HUNDHAUSEN,SARAH A.DOUGLAS,JOHN T.STASKO.A Meta-Study of Algorithm Visualization Effectiveness[J].Journal of Visual Languages and Computing,2002(3).
TP311.1
A
1004-7344(2016)32-0285-02
2016-10-29