999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向計算思維培養的選擇排序算法可視化實現

2024-12-18 00:00:00張樂吟
無線互聯科技 2024年23期
關鍵詞:可視化

摘要:計算性思維被視為21世紀每個人必備的核心技能之一。計算思維的培養已經成為國內外教育界的熱門話題。為了輔助“數據結構與算法”課程教學,培養學生計算思維,文章基于RAPTOR設計并實現選擇排序算法可視化,動態演示了算法執行過程,可以幫助學生直觀理解算法精髓,提高教學效果。該研究可以為其他算法可視化實現提供新思路,也可以充當學生實踐案例,旨在最大化降低語法要求的前提下,協助學生實現排序算法可視化。

關鍵詞:排序算法;選擇排序;計算思維;可視化;RAPTOR

中圖分類號:TP311.1""文獻標志碼:A

0"引言

知名瑞士科學家、PASCAL語言之父沃思(N. Wirth)教授曾提出一個著名等式:程序=算法+數據結構[1]。理解并掌握算法與數據結構的過程,實質上也是培養計算思維與問題解決能力的過程。通過掌握各種算法思想和數據結構的特性,程序員可以更加靈活地設計程序、優化代碼結構并解決實際問題。這種思維能力不僅對于初學者來說至關重要,也是資深程序員不斷提升自我、追求卓越的重要素質。

在“數據結構與算法”課程中,排序是教學重點之一,也是計算機程序設計領域的一項基礎操作。采用傳統教學手段,教師難以全面展現排序算法的抽象性及動態執行流程,要達到理想的教學效果頗具挑戰。算法可視化技術,通過將抽象的數據和操作轉化為動態的圖像演示,使得學習者能夠快速理解算法與編程代碼之間的內在聯系。

RAPTOR是一種基于流程圖的可視化算法工具[2-3],它允許用戶通過拖放操作,將流程圖符號相互連接,以此構建算法程序。所生成的流程圖不僅能在其內置環境中直接進行調試和運行,還能直觀地指示出程序流程當前執行的位置,展示所有變量的變化情況,為初學者提供了一種注重思維、降低語法學習負擔的編程途徑。本文采用RAPTOR工具實現了選擇排序算法的可視化,旨在幫助學生直觀理解算法的工作原理,進而提升其計算思維能力。

1"總體設計

基于Raptor的排序算法教學演示系統,使用條形圖模擬數據的相對大小和移動過程,可以實現代碼、算法、運行環境以及數據結構的可視化。為了方便觀察和簡化程序,本文只需要模擬整數1到N排序的過程。主程序首先調用隨機序列生成模塊生成一個由自然數1到N組成的隨機序列,輸出到raw.csv文件;然后調用視窗初始化模塊把原始數據以條形圖的形式在窗體顯示;接下來調用排序模塊對原始數據進行排序,每執行一個步驟就刷新一次條形圖。整個排序過程將在窗體動態演示,在比較、交換、循環結束等關鍵節點播放不同的音效,同時改變相關數據條的顏色。原始數據也可以直接從raw.csv文件讀取。排序算法可視化主程序的流程如圖1所示。

2"排序算法可視化實現

2.1"隨機序列生成模塊

主程序定義長度N為40的一維數組A,用于存放待處理數據;然后運行Init_Array隨機序列生成模塊,生成一個1至N的隨機全排列,保存在數組A中。所謂全排列,就是將這N個整數按照一定的順序排列,總共有N!種排列方法。隨機序列生成模塊首先使用Random獲取[0,1)區間的隨機小數,然后使用floor(Random*N)+1獲取1到N之間的隨機整數test。為了避免數組A中的元素重復,隨機序列生成模塊定義另外一個數組used,使用used[i]表示數字i是否已經出現過。used數組元素初始化為False。隨機序列生成模塊每輪循環生成一個隨機整數test,如果used[test]等于False,說明test與數組A已有元素均不重復,就可以把test保存到數組A中,把used[test]設置為True;如果used[test]等于True,說明test已經是數組A的元素,就重新生成新的隨機整數,直到出現未使用過的數為止[4]。Init_Array子程序的流程如圖2所示,注意Raptor中數組下標是以1開始的。

2.2"文件輸入輸出模塊

1到N這N個整數的隨機序列生成完畢以后,保存在數組A中。主程序調用文件輸出模塊Out_File把數組A輸出到文件raw.csv中。csv文件可以用Excel打開查看。Out_File子程序的流程如圖3所示,使用數組長度N控制循環,PUT輸出語句每輪循環向文件寫入一個數組元素并且換行。RAPTOR程序在執行過程中遇到PUT輸出語句,系統會檢查輸出是否已經被重定向。如果輸出被Redirect_Output重定向語句指定輸出文件,系統會將輸出數據寫入指定文件;如果沒有重定向,輸出數據將直接顯示在主控制臺[4]。因此,輸出數據之前,Out_File子程序先執行Redirect_Output(file)輸出重定向語句;文件輸出完成以后,Out_File子程序需要調用Redirect_Output(False)輸出重定向結束語句,關閉輸出文件,使后續輸出內容繼續寫到主控制臺。

主程序設置Input_Mode變量,用于選擇排序前原始數據的輸入方式,如圖1所示。如果Input_Mode等于0,則主程序調用Init_Array子程序重新生成一個隨機的全排列,輸出到文件raw.csv中;如果Input_Mode不等于0,則主程序調用In_File子程序,從raw.csv讀入原始數據,保存到數組A中。文件輸入模塊In_File在輸入數據之前,先執行Redirect_Input(file)輸入重定向語句;文件輸入完成以后,需要調用Redirect_Input(False)輸入重定向結束語句[4]。文件輸入模塊使用文件長度和讀入指針控制輸入循環[4],每輪循環使用GET輸入語句從文件讀入一個數組元素。文件輸入模塊的流程如圖4所示。

2.3"視窗初始化模塊

原始數據保存在數組A以后,主程序調用Visu_Array子程序,初始化圖形視窗界面,流程如圖5所示。視窗初始化模塊Visu_Array首先調用Open_Graph_Window創建圖形窗口。然后,調用Clear_Window(White),使用白色覆蓋清空整個窗口。接著,調用Draw_Box繪制矩形背景,用黑色描邊;調用Display_Text顯示標題欄“Selection Sort”。最后,使用數組長度N控制循環,輸出深灰色的原始數據條形圖。第i個數據條的高度是A[i]×10,與數組元素A[i]的大小成正比。

需要注意的問題是,動畫運行的時候,如果每次執行繪制指令都立即更新視窗,直接在屏幕上切換圖像,可能會造成動畫不穩和屏幕閃爍[5]。尤其是復雜的動畫,圖像切換很頻繁,往往需要花費大量的繪制時間。減少圖像閃爍的技術[6]有很多,例如:增量更新、頁面切換以及雙緩沖等。這些技術手段各自擁有其特定的優勢與局限性,適用于不同的應用場景。本文采用雙緩沖技術[6],使用Freeze_Graph_Window和Update_Graph_Window指令來平滑動畫的顯示。在繪制或者更新動畫之前,Visu_Array子程序調用Freeze_Graph_Window,生成一個可以繪制圖形對象的屏幕緩沖區,這個緩沖區被用于所有圖形的繪制。也就是說,圖形對象不是直接繪制到屏幕上,而是繪制到屏幕緩沖區。在屏幕緩沖區,完成一幀動畫的繪制和更新以后,Visu_Array子程序調用Update_Graph_Window就可以立即將緩沖區圖像一次性顯示到屏幕上,有效避免了直接在屏幕上進行動畫消除和刷新處理所帶來的屏幕閃爍情況。

2.4"排序算法動態演示及音效模塊

選擇排序是一種簡單直觀的排序算法,類似于整理撲克牌,流程如圖6所示。選擇排序算法使用雙重循環,外層循環變量是i,內層循環變量是j。排序過程的動態演示如圖7所示,整個數組分為2個子集,左邊淺灰色區域是已經排序的子集,右邊深灰色區域是未排序的子集。每一輪外層循環從未排序子集A[i]到A[N]中選出最小的元素,放入有序子集A[1]到A[i-1]的后面。這個過程重復進行,每輪循環只需交換一次,直到整個數組都排好序。雙層循環執行過程如圖7(a)到圖7(f)所示。

(1)假設未排序子集的首元素A[i]為當前未排序數據的最小元素,排序模塊把A[i]數據條改成白色,再把當前外層循環未排序子集的最小元素下標minIndex賦值為i,如圖7(a)所示。

(2)進入內層循環后,循環變量j取值為i+1到N。在每輪內層循環中,排序模塊2次調用Visu_Color子程序,使當前元素A[j]所對應的數據條先變成黑色,再變回深灰色。為了便于觀察,數據條變黑以后使用Delay_For(0.3)延遲0.3 s,再變回深灰色,如圖7(a)(b)所示。排序模塊每次改變循環變量j的值,都會調用Play_Sound_Background播放元素大小比較的音效compare.wav。

(3)在內層循環中,排序模塊逐個比較A[j]與A[minIndex],如果發現當前元素A[j]小于原有最小值A[minIndex],排序模塊就調用Visu_Min子程序,把A[minIndex]變回深灰色,A[j]數據條改成白色。為了便于觀察,每個動畫結束后都延遲0.3s。排序模塊把minIndex賦值為新最小元素的下標j,播放最小值音效min.wav,如圖7(a)(b)所示。

(4)當j等于N+1,未排列子集的遍歷已經完成,內層循環結束,A[minIndex]為整個未排序子集的最小元素,如圖7(c)所示。排序模塊判斷未排序子集首元素A[i]與最小元素A[minIndex]是否位置相同,如果i不等于minIndex,說明兩者位置不同。排序模塊調用Visu_Color子程序使數據條A[i]和A[minIndex]均為白色,如圖7(d)所示。此時,排序模塊交換A[i]與A[minIndex],讓本輪外層循環的最小未排序元素緊跟在有序子集(淺灰色區域)的后面,播放交換音效swap.wav,如圖7(e)所示。外層循環結束時,排序模塊調用Visu_Color子程序把數據條A[i]改成淺灰色,播放結束一輪外層循環的音效Loop.wav,如圖7(f)所示。

(5)排序模塊把i+1賦值給i,繼續進行下一輪外層循環,重復步驟(1)到(4),直到i等于N,排序結束。排序模塊調用Visu_Color,讓末位數據條A[N]變成淺灰色。

子程序Visu_Color、Visu_Min,Visu_Swap用于動態演示過程中數據條的著色和變色效果。其中,子程序Visu_Swap(i,minIndex,Array)用于數據條A[i]與A[minIndex]交換位置。子程序Visu_Swap首先覆蓋繪圖區域背景色,用來擦除2個數據條;然后繪制交換后的數據條,涂成白色,如圖7(d)(e)所示。延遲0.3s以后,數據條A[i]與A[minIndex]變回深灰色。子程序Visu_Color(i,A,color)由于改變數據條A[i]的顏色。子程序Visu_Min(j,minIndex,A)是在內層循環發現新最小值時,把原有最小數據條A[minIndex]變回深灰色,新最小數據條A[j]改成白色。

3"結語

本文依托RAPTOR工具,實現了選擇排序算法的可視化,動態地演示了該算法的執行流程,將原本在學習過程中難以直觀呈現的思維結構與方法,借助動畫等手段予以顯性化展現,實質上是一個將隱性思維顯性化的過程,有助于提升教學質量。本項目同樣可作為一個實踐案例。學生利用RAPTOR算法工具,無須分心于復雜的語法規則,就能夠專注于算法設計,學生可以直接構建流程圖并獲取運行結果,真正實現強化與鍛煉計算思維的目標。

參考文獻

[1]沃思 N.算法+數據結構=程序[M].曹德和,劉椿年,譯.北京:科學出版社,1984.

[2]程向前,周夢遠.基于RAPTOR的可視化計算案例教程[M].北京:清華大學出版社,2014.

[3]邊晶,馮萍.基于流程圖的可視化算法工具RAPTOR在計算思維培養中的應用實踐[J].吉林廣播電視大學學報,2021(3):154-157.

[4]謝濤,程向前,楊金成.RAPTOR程序設計案例教程[M].北京:清華大學出版社,2014.

[5]劉衛光,夏敏捷.從Java到Android游戲編程開發[M].北京:清華大學出版社,2021.

[6]江建國,溫少營,張瑞楠.基于雙緩沖技術的GDI+無閃爍繪圖[J].計算機應用,2012(增刊2):136-139.

(編輯"王永超)

Visual implementation of selection sorting algorithm for computational thinking cultivation

ZHANG "Yueyin

(School of Software, Guangdong Food and Drug Vocational College, Guangzhou 510520, China)

Abstract: "Computational thinking is regarded as one of the core skills necessary for everyone in the 21st century. Cultivating computational thinking has become a hot topic in educational circles at home and abroad. To assist the teaching of “Data Structure and Algorithm” and develop students’ computational thinking, this paper designs and implements the visualization for the selection sorting algorithm based on RAPTOR, and dynamically demonstrates the algorithm execution process, which can help students intuitively understand the essence of the algorithm, and improve the teaching effect. This research can provide new ideas for other algorithm visualization implementations. It can also serve as a practical case for students, aiming to assist them in visualizing sorting algorithms while minimizing the syntax requirements.

Key words: sorting algorithm; selection sorting; computational thinking; visualization; RAPTOR

猜你喜歡
可視化
無錫市“三項舉措”探索執法可視化新路徑
基于CiteSpace的足三里穴研究可視化分析
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
三維可視化信息管理系統在選煤生產中的應用
選煤技術(2022年2期)2022-06-06 09:13:12
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
基于CGAL和OpenGL的海底地形三維可視化
可視化閱讀:新媒體語境下信息可視化新趨勢
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
主站蜘蛛池模板: 国产又爽又黄无遮挡免费观看| av一区二区无码在线| 久久精品aⅴ无码中文字幕| 国产一区二区三区精品久久呦| 国产一区二区色淫影院| 一级成人a做片免费| 高h视频在线| 亚洲日韩欧美在线观看| 国产成人AV综合久久| 国产综合网站| 谁有在线观看日韩亚洲最新视频| 婷婷午夜影院| 无码专区在线观看| 狂欢视频在线观看不卡| 精品国产网站| 久久综合AV免费观看| 欧美三級片黃色三級片黃色1| 国产精品视频系列专区| 国产噜噜在线视频观看| 亚洲av日韩av制服丝袜| 无套av在线| 色婷婷视频在线| 亚洲第一综合天堂另类专| 永久免费无码日韩视频| 中文字幕亚洲综久久2021| 免费一级α片在线观看| 国产精品亚洲五月天高清| 亚洲国产成熟视频在线多多| 天天综合天天综合| 欧美有码在线| 第九色区aⅴ天堂久久香| 中文国产成人精品久久| aⅴ免费在线观看| 欧美午夜久久| 久久99国产精品成人欧美| 在线免费a视频| 日韩在线1| 亚洲精品黄| 欧美v在线| 中文字幕亚洲另类天堂| 丁香六月综合网| 女人18毛片水真多国产| 亚洲最黄视频| 国产精品久久久久久影院| 亚洲第一视频网| 欧洲成人在线观看| 色悠久久综合| 亚洲人人视频| 美女毛片在线| 毛片在线播放网址| 久久性视频| 日韩在线观看网站| 成人小视频网| 黄色国产在线| 中文字幕va| 国产95在线 | 尤物国产在线| 久草国产在线观看| 国产最新无码专区在线| 91蜜芽尤物福利在线观看| 国产精欧美一区二区三区| 国产精品视频导航| 97人人做人人爽香蕉精品| 免费国产小视频在线观看| 色偷偷男人的天堂亚洲av| 国产一区成人| 少妇精品网站| 国产欧美一区二区三区视频在线观看| 欧美一区二区丝袜高跟鞋| 久久综合亚洲色一区二区三区| 日本免费a视频| 亚洲一区二区精品无码久久久| 欧美午夜网站| www亚洲天堂| 波多野结衣AV无码久久一区| 九九热视频精品在线| 在线播放国产99re| 亚洲男人的天堂久久精品| 一区二区三区在线不卡免费| 国产综合精品日本亚洲777| 亚洲国产中文在线二区三区免| 欧美va亚洲va香蕉在线|