丁爽
【摘 要】C語言程序設計代碼的學習復雜、枯燥,冒泡排序算法又是C語言程序設計的重點與難點內容之一?;贔lash的C語言冒泡排序課件,用Flash技術實現(xiàn)冒泡排序的動態(tài)演示過程,并逐步推導出冒泡算法的實現(xiàn)代碼。算法的動態(tài)演示及代碼的推導形象、直觀、易懂,能夠引導學生主動思考,便于學生理解,激發(fā)學生的學習興趣。課件中的拓展知識模塊能夠培訓學生的自學能力,培訓學生發(fā)現(xiàn)問題、解決問題的能力。
【關鍵詞】冒泡排序算法;Flash;C語言
C語言程序設計是高職院校工科學生的必修課。在程序設計中排序算法占據(jù)非常重要的地位,使用頻率非常高,而冒泡排序是排序算法中最基本的算法。在程序設計教學中,冒泡的思想學生雖然容易理解,但掌握的不夠扎實,自己動手編程的時候不知所措。經(jīng)調查分析,學生在學習冒泡排序的過程中,不能親自體驗到數(shù)據(jù)“冒泡”的過程,對冒泡排序沒有全面透徹的認識,對所學代碼感到枯燥乏味。本文通過設計可視化的冒泡排序過程,動態(tài)地體現(xiàn)數(shù)據(jù)“冒泡”的過程,程序運行的每一步都清晰直觀的體現(xiàn)出來,一目了然。在理解算法的基礎上,冒泡算法的代碼由易到難一步步推導出來,學生能夠真正理解冒泡算法的程序代碼,對整個過程印象深刻。冒泡算法的Flash動畫,能夠吸引學生的學習興趣,會在教學中取得良好的效果。
1 冒泡排序算法簡述
排序,是將數(shù)據(jù)元素的任意順序排列為一個按關鍵字有序的序列。
冒泡排序算法是交換排序類的一種,它的基本思想是:在待排序的序列中,依次將相鄰的兩個數(shù)進行比較,順序錯誤則進行位置交換。
假設對待排序的序列進行升序排序,將待排序序列中的每一個元素看成一個“氣泡”,并且縱向排列,在排序的過程中,大數(shù)“沉底”,小數(shù)逐漸“浮起”,就像水底的氣泡一樣逐漸向上冒,所以形象地稱為冒泡排序。
2 C語言冒泡排序課件的設計
本課件設計了排序的概念、基本思想、算法分析、名字由來、知識拓展五個獨立的模塊。
2.1 排序的概念模塊
排序的概念模塊主要介紹了排序的概念及其確切定義。
2.2 基本思想模塊
基本思想模塊主要介紹了冒泡排序的基本思想,通過冒泡排序的基本思想可以了解冒泡排序的基本過程。
2.3 算法分析模塊
算法分析模塊中以5、9、3、7、1五個數(shù)組成的待排序序列進行升序排列為例,分析冒泡排序的過程,并逐步推導出冒泡算法的代碼。
首先進行算法分析,每一輪比較確定一個較大數(shù),五個數(shù)需要經(jīng)過四輪的比較最終達到序列有序,在每一輪比較中,依次比較相鄰元素。第一輪比較中,依次對相鄰元素進行比較,如果前面的元素大于后面的元素則進行交換,5個數(shù)經(jīng)過4次比較,確定最大數(shù)9。第二輪比較中,對剩下的4個元素進行比較,確定第二大數(shù)7。依次類推,第三輪比較確定第三大數(shù)5,第四輪比較確定第四大數(shù)3,至此,序列有序。
然后,根據(jù)每輪的比較過程,分別寫出四輪比較相對應的C語言程序代碼,不難發(fā)現(xiàn)每輪的比較都可以用一個for循環(huán)解決,但循環(huán)條件不同,引導學生找到規(guī)律,再用一個for循環(huán)來解決。
算法分析模塊中,對冒泡排序過程進行逐步演示并對程序代碼進行一步步的推導,使整個排序過程動態(tài)的呈現(xiàn)出來,對程序代碼的分析清晰易懂。在程序代碼的推導過程中由易到難,引導學生獨立思考,逐步實現(xiàn)冒泡排序算法。
2.4 名字由來模塊
名字由來模塊通過介紹冒泡排序名字的由來,強調冒泡排序 “兩兩比較,大數(shù)下沉,小數(shù)上浮”的特點,并通過一個完整的動畫演示了大數(shù)“沉底”,小數(shù)逐漸“浮起”,就像水底的氣泡一樣逐漸向上冒這一過程。這一模塊的設計主要是加深對冒泡排序算法基本思想的理解,有一個形象的記憶,只有真正理解了算法的基本思想,才能更好的掌握程序代碼,而不是靠死記硬背程序代碼。
2.5 知識拓展模塊
知識拓展模塊分為改進的冒泡算法和其他排序算法兩部分。
改進的冒泡算法部分主要是提出問題,改進冒泡算法。在這一過程中,引導學生思考,培養(yǎng)學生發(fā)現(xiàn)問題解決、問題的能力。如果待排序的序列為9、1、3、5、7五個數(shù),經(jīng)過第一輪的排序該序列已經(jīng)有序,第二輪的比較沒有元素交換位置,不需要再進行后面兩輪的比較,從而提高冒泡算法的效率。不難發(fā)現(xiàn),沒有交換就是提前退出外層循環(huán)的條件,增加一個標志變量flag,在每輪比較前,首先將flag的值設置為0(表示沒有交換),每當元素位置發(fā)生變化時,將flag的值重新設置為1(表示有交換),在每輪比較結束后來判斷本輪是否有元素交換位置,如果沒有,提前退出外層循環(huán)。
其他排序算法部分介紹了比較排序算法和選擇排序算法的基本思想,而且進行了分步演示及程序代碼推導。比較排序算法和選擇排序算法也是常用的排序算法,通過不同排序方法的介紹,讓學生在掌握各種排序的特點后,能夠靈活運用。
知識拓展模塊提供更多的知識內容,給學生學習的空間,發(fā)現(xiàn)問題,解決問題,讓學生獨立思考,培養(yǎng)學生的自學能力。
3 C語言冒泡排序課件的實現(xiàn)
排序的概念、基本思想、算法分析、名字由來、知識拓展五個模塊分別設計五個影片剪輯來完成相應的模塊內容。在主場景中添加排序的概念、基本思想、算法分析、名字由來、知識拓展五個按鈕,并對五個按鈕添加動作,使其跳轉到相應的幀來播放相應的影片剪輯。
排序的概念和基本思想兩個模塊的影片剪輯使用Flash的遮罩動畫制作,逐步顯示相關的知識點內容。
算法分析、名字由來和知識拓展模塊中分別使用了上一步和下一步按鈕來控制播放的進度。
算法分析模塊中用有數(shù)字的、有顏色的立體球呈現(xiàn)序列中的元素,在算法分析中每一步比較的兩個元素都高亮顯示,并用箭頭記錄每一次比較的對象,每一輪確定的最大數(shù)紅色顯示。所以算法的排序過程清晰直觀,過程可控,易于學習。
4 結束語
基于flash的冒泡排序課件,動態(tài)演示了冒泡算法,并逐步推導出程序代碼,既有利于教師的課堂教學,也利于學生的課后復習,學生可以邊看動態(tài)演示,邊用C語言程序實現(xiàn)算法,可以說是講解和實踐的完美結合。課件中的動畫將枯燥的程序代碼采取了可視化的方法進行講解,調動學生學習的積極性,激發(fā)學生的學習熱情,讓學生主動思考,主動參與到知識的形成過程中,很好的解決了教學難點,為后續(xù)一系列的學習打下良好的基礎。
【參考文獻】
[1]衛(wèi)華,高金芹,王維東.Flash MX應用基礎[M].長沙:國防科技大學出版社,2003.
[2]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2009.
[3]嚴蔚敏,吳偉民.數(shù)據(jù)結構(C語言版)[M].北京:清華大學出版社,1997.
[4]劉暢.冒泡排序法例程Flash制作[J].牡丹江師范學院學報,2008(2):30-31.
[5]蘇仰娜.C語言程序交互式虛擬算法動畫的開發(fā)與教學應用[J].電化教育研究,2010(4):72-74.
[6]楊波,梁少林.C語言中冒泡排序算法的教學設計與分析[J].信息與電腦,2015(16):180-181.
[責任編輯:朱麗娜]