• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Unity3D 的冒泡排序算法動(dòng)態(tài)可視化設(shè)計(jì)及實(shí)現(xiàn)

    2021-03-12 15:23:54馬曉萍
    喀什大學(xué)學(xué)報(bào) 2021年6期
    關(guān)鍵詞:柱狀圖控件代碼

    馬曉萍

    (喀什大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,新疆喀什 844000)

    0 引言

    冒泡排序是一種典型的、穩(wěn)定排序算法[1],對(duì)初次接觸程序語(yǔ)言的學(xué)習(xí)者來(lái)說(shuō),排序算法比較抽象,對(duì)算法的理解存在較大的障礙。如何讓學(xué)生更好直觀的理解排序算法的原理并用程序語(yǔ)言實(shí)現(xiàn),是一個(gè)值得研究的問(wèn)題。Unity3D 是一款實(shí)時(shí)3D 互動(dòng)內(nèi)容創(chuàng)作和運(yùn)營(yíng)平臺(tái),所提供的可視化、實(shí)時(shí)三維動(dòng)畫(huà)等類(lèi)型互動(dòng)內(nèi)容[2],具有強(qiáng)大的交互功能和豐富的三維表現(xiàn)。利用Unity3D 實(shí)現(xiàn)冒泡排序算法動(dòng)態(tài)可視化,是一種有效的算法可視化方式,可促進(jìn)學(xué)習(xí)者對(duì)冒泡排序算法的理解。

    1 冒泡排序

    1.1 冒泡排序原理

    在程序設(shè)計(jì)語(yǔ)言的排序算法中,冒泡排序是一種平方級(jí)的原地排序算法[3]。冒泡排序算法的原理:在待排序的一組數(shù)中,將相鄰的兩個(gè)數(shù)值進(jìn)行比較,若前面的數(shù)值比后面的數(shù)值大就交換兩數(shù),把小數(shù)值放在前面,否則不交換;直至最終完成從小到大的排序。[4]

    1.2 C#語(yǔ)言實(shí)現(xiàn)

    冒泡排序算法的程序描述(C#語(yǔ)言)如下:

    上述代碼中,通過(guò)外層for循環(huán),用數(shù)組的長(zhǎng)度控制整體程序的運(yùn)行次數(shù),內(nèi)層for用于與前后兩位數(shù)比較大小,如果存在第一個(gè)數(shù)比第二個(gè)數(shù)大,則兩個(gè)數(shù)利用中間變量temp,實(shí)現(xiàn)交換的邏輯。

    2 基于Unity3D 的冒泡排序算法可視化設(shè)計(jì)及實(shí)現(xiàn)

    2.1 冒泡排序三維動(dòng)態(tài)可視化設(shè)計(jì)

    在Unity 中設(shè)計(jì)由一個(gè)Panel 容器控件,一個(gè)Text 文本控件,兩個(gè)Button 按鈕控件組成的UI 界面。Text控件文本內(nèi)容為“冒泡排序法三維動(dòng)態(tài)可視化”,當(dāng)單擊“隨機(jī)生成數(shù)據(jù)”按鈕時(shí),在Panel 容器控件上逐個(gè)動(dòng)態(tài)生成隨機(jī)數(shù)據(jù)柱狀圖效果,此案例中隨機(jī)生成9 個(gè)1~100 的整數(shù),并產(chǎn)生以該整數(shù)作為動(dòng)態(tài)柱狀圖的高度。當(dāng)單擊“開(kāi)始冒泡排序”按鈕時(shí),在Panel 容器控件上,開(kāi)始進(jìn)行柱狀圖動(dòng)態(tài)數(shù)據(jù)的交換,準(zhǔn)備比較的兩個(gè)柱狀圖變成綠色,等待排序比較,進(jìn)行完一輪比較后所產(chǎn)生的最大數(shù)柱狀圖變成紅色。

    2.2 實(shí)現(xiàn)隨機(jī)生成數(shù)據(jù)及動(dòng)態(tài)生成效果

    2.2.1 隨機(jī)排序數(shù)據(jù)類(lèi)的設(shè)計(jì)

    (1)設(shè)計(jì)一個(gè)RandomData 類(lèi)用于生成隨機(jī)數(shù)。如圖1所示。

    圖1 RandomData類(lèi)圖

    部分代碼如下:

    (2)利用協(xié)程機(jī)制動(dòng)態(tài)生成柱狀圖的接口設(shè)計(jì).

    該接口中,go.GetComponent<Transform>().position 語(yǔ)句表示動(dòng)態(tài)生成柱狀圖的位置,t.Get-Component<Transform>().position 語(yǔ)句表示隨機(jī)產(chǎn)生數(shù)據(jù)的文本顯示在當(dāng)前柱狀圖y 軸上方v.y+0.5位置。通過(guò)測(cè)試,Unity中無(wú)法直接調(diào)用接口,為了實(shí)現(xiàn)接口InitBarGraph()和接口Sort()的功能,本案例中編寫(xiě)了兩個(gè)方法,使用StartCall()方法分別調(diào)用接口。調(diào)用接口InitBarGraph()參考代碼如下:

    動(dòng)態(tài)生成隨機(jī)柱狀圖效果圖如下圖2所示。

    圖2 隨機(jī)柱狀圖

    2.2.2 冒泡排序類(lèi)的設(shè)計(jì)

    (1)冒泡排序及柱狀圖顏色變化的接口設(shè)計(jì)。

    該接口主要實(shí)現(xiàn)設(shè)置準(zhǔn)備比較的兩個(gè)柱狀圖顏色、待排數(shù)的柱狀圖顏色,最大數(shù)的柱狀圖顏色,以及進(jìn)行柱狀圖動(dòng)態(tài)數(shù)據(jù)的交換的冒泡排序功能,程序流程圖如圖3所示。

    圖3 可視化冒泡排序流程圖

    部分代碼如下:

    (2)柱狀圖的位置和高度的方法。

    該方法用以實(shí)現(xiàn)柱狀圖、柱狀圖上隨機(jī)數(shù)數(shù)字的位置和高度的設(shè)置,使得數(shù)據(jù)始終顯示在柱狀圖正上方的功能。

    部分代碼如下:

    (3)實(shí)現(xiàn)第一輪冒泡排序的效果圖如圖4 所示。

    圖4 第一輪冒泡排序效果圖

    3 結(jié)語(yǔ)

    本文利用Unity3D 平臺(tái),以“C#程序設(shè)計(jì)”課程中的冒泡排序?yàn)榘咐?,利用協(xié)程動(dòng)態(tài)生成隨機(jī)數(shù)據(jù)柱狀圖,并以三維動(dòng)態(tài)可視化實(shí)現(xiàn)C#腳本語(yǔ)言的冒泡排序算法,直觀動(dòng)態(tài)地展示了冒泡排序算法的基本思想和排序過(guò)程。實(shí)驗(yàn)證明,動(dòng)態(tài)可視化的課程設(shè)計(jì),既通過(guò)Unity3D 創(chuàng)建三維動(dòng)態(tài)互動(dòng)內(nèi)容提高了學(xué)習(xí)者的學(xué)習(xí)興趣,又加深了學(xué)習(xí)者對(duì)冒泡排序算法原理的理解性,達(dá)到了良好的教學(xué)效果。

    猜你喜歡
    柱狀圖控件代碼
    繪制和閱讀降水量柱狀圖
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    基于Android平臺(tái)的柱狀圖組件的設(shè)計(jì)實(shí)現(xiàn)
    基于Excel-VBA的深水井柱狀圖繪制程序的設(shè)計(jì)和實(shí)現(xiàn)
    Mapgis在繪制鉆孔柱狀圖中的應(yīng)用
    就這樣玩會(huì)VBA中常見(jiàn)的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    汉源县| 安仁县| 香河县| 潞西市| 邵阳市| 柳河县| 开江县| 新乐市| 抚州市| 德州市| 怀安县| 乐安县| 南开区| 东丰县| 福建省| 龙海市| 泌阳县| 尖扎县| 蒙自县| 开江县| 华安县| 吉木萨尔县| 睢宁县| 静乐县| 英超| 临洮县| 罗定市| 楚雄市| 泸州市| 肇庆市| 工布江达县| 乡城县| 遂昌县| 五原县| 安康市| 五指山市| 城口县| 陵川县| 奉节县| 富平县| 土默特左旗|