摘 要:可視化已經(jīng)成為現(xiàn)代信息技術(shù)發(fā)展過(guò)程中不可或缺的技術(shù),而實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)排序的可視化可以更好地為教學(xué)服務(wù),成為教學(xué)過(guò)程中必不可少的教學(xué)軟件。數(shù)據(jù)結(jié)構(gòu)排序可視化可以將各種各樣的排序用動(dòng)態(tài)的方式展現(xiàn)在教師和學(xué)生面前,有助于教師講解,也有利于學(xué)生理解和學(xué)習(xí)。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);排序;可視化
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-291X(2013)29-0253-03
引言
在科學(xué)高速發(fā)展的21世紀(jì),計(jì)算機(jī)得到了廣泛的應(yīng)用。在時(shí)代的需求下,人們對(duì)知識(shí)的需求也越來(lái)越高。為了人們便于理解和掌握更多復(fù)雜的知識(shí),所以可視化技術(shù)成為了人們學(xué)習(xí)復(fù)雜知識(shí)的工具。那么,什么是可視化呢?可視化(Visualization)是利用計(jì)算機(jī)圖形學(xué)和圖像處理技術(shù),將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來(lái),并進(jìn)行交互處理的理論、方法和技術(shù)。它涉及到計(jì)算機(jī)圖形學(xué)、圖像處理、計(jì)算機(jī)視覺(jué)、計(jì)算機(jī)輔助設(shè)計(jì)等多個(gè)領(lǐng)域,成為研究數(shù)據(jù)表示、數(shù)據(jù)處理、決策分析等一系列問(wèn)題的綜合技術(shù)。目前正在飛速發(fā)展的虛擬現(xiàn)實(shí)技術(shù)也是以圖形圖像的可視化技術(shù)為依托的。可視化把數(shù)據(jù)轉(zhuǎn)換成圖形,給予人們深刻與意想不到的洞察力,在很多領(lǐng)域使科學(xué)家的研究方式發(fā)生了根本變化。可視化技術(shù)的應(yīng)用大至高速飛行模擬,小至分子結(jié)構(gòu)的演示,無(wú)處不在。在互聯(lián)網(wǎng)時(shí)代,可視化與網(wǎng)絡(luò)技術(shù)結(jié)合使遠(yuǎn)程可視化服務(wù)成為現(xiàn)實(shí),可視區(qū)域網(wǎng)絡(luò)因此應(yīng)運(yùn)而生。
數(shù)據(jù)結(jié)構(gòu)是由數(shù)據(jù)元素依據(jù)某種邏輯聯(lián)系組織起來(lái)的。對(duì)數(shù)據(jù)元素間邏輯關(guān)系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計(jì)算機(jī)內(nèi)存儲(chǔ),數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)方式是數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),是其在計(jì)算機(jī)內(nèi)的表示;此外討論一個(gè)數(shù)據(jù)結(jié)構(gòu)必須同時(shí)討論在該類數(shù)據(jù)上執(zhí)行的運(yùn)算才有意義。在許多類型的程序的設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)的選擇是一個(gè)基本的設(shè)計(jì)考慮因素。許多大型系統(tǒng)的構(gòu)造經(jīng)驗(yàn)表明,系統(tǒng)實(shí)現(xiàn)的困難程度和系統(tǒng)構(gòu)造的質(zhì)量都嚴(yán)重的依賴于是否選擇了最優(yōu)的數(shù)據(jù)結(jié)構(gòu)。許多時(shí)候,確定了數(shù)據(jù)結(jié)構(gòu)后,算法就容易得到了。有些時(shí)候事情也會(huì)反過(guò)來(lái),我們根據(jù)特定算法來(lái)選擇數(shù)據(jù)結(jié)構(gòu)與之適應(yīng)。不論哪種情況,選擇合適的數(shù)據(jù)結(jié)構(gòu)都是非常重要的。排序算法是數(shù)據(jù)結(jié)構(gòu)學(xué)科經(jīng)典的內(nèi)容,其中內(nèi)部排序現(xiàn)有的算法有很多種,其中包含冒泡排序,直接插入排序,簡(jiǎn)單選擇排序,希爾排序,快速排序,堆排序等,各有其特點(diǎn)。
一、設(shè)計(jì)目的
本次我們的創(chuàng)新實(shí)踐項(xiàng)目就是研究關(guān)于數(shù)據(jù)結(jié)構(gòu)的可視化。簡(jiǎn)單來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)可視化就是利用計(jì)算機(jī)的編程語(yǔ)言將數(shù)據(jù)結(jié)構(gòu)的內(nèi)容以動(dòng)態(tài)的方式表現(xiàn)出來(lái)。這就為數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)帶來(lái)很多的方便,更容易讓人們理解。
通過(guò)本次實(shí)踐項(xiàng)目的研究,可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高;可以學(xué)習(xí)并掌握數(shù)據(jù)結(jié)構(gòu)與算法計(jì),使學(xué)生能夠有獨(dú)立的分析能力和設(shè)計(jì)能力,初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能,提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力。下面我們重點(diǎn)來(lái)講解一下關(guān)于本次研究項(xiàng)目的具體構(gòu)思和實(shí)現(xiàn)方式。
二、具體實(shí)現(xiàn)
按要求選擇不同的操作。選擇后根據(jù)不同的選擇進(jìn)行不同的操作,最終達(dá)到對(duì)各種排序的可視化。系統(tǒng)設(shè)計(jì)如圖1所示。
(一)分析各種排序算法的特點(diǎn)
1.冒泡排序
這是一種較簡(jiǎn)單的排序方法,它重復(fù)地走訪要排序的數(shù)列,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。
2.插入排序
每次從無(wú)序表中取出第一個(gè)元素,把它插入到有序表的合適位置,使有序表仍然有序。第一趟比較前兩個(gè)數(shù),然后把第二個(gè)數(shù)按大小插入到有序表中; 第二趟把第三個(gè)數(shù)據(jù)與前兩個(gè)數(shù)從后向前掃描,把第三個(gè)數(shù)按大小插入到有序表中;依次進(jìn)行下去,進(jìn)行了(n-1)趟掃描以后就完成了整個(gè)排序過(guò)程。
3.選擇排序
它的基本思想是:對(duì)待排記錄(R1,R2,...,Rn)進(jìn)行n次選擇操作。其中第i次操作是選擇第i個(gè)小(或大)的記錄放在第i個(gè)(或n-i+1個(gè))位置上,從而得到一個(gè)新的記錄數(shù)曾1的有序表。
4.快速排序
首先檢查數(shù)據(jù)列表中的數(shù)據(jù)數(shù),如果小于兩個(gè),則直接退出程序。如果有超過(guò)兩個(gè)以上的數(shù)據(jù),就選擇一個(gè)分割點(diǎn)將數(shù)據(jù)分成兩個(gè)部分,小于分割點(diǎn)的數(shù)據(jù)放在一組,其余的放在另一組,然后分別對(duì)兩組數(shù)據(jù)排序。
5.希爾排序
先取一個(gè)正整數(shù)d1 (二)可視化的實(shí)現(xiàn) 在界面的排序方法處選擇需要的排序方法,然后在數(shù)值輸入?yún)^(qū)輸入排序的數(shù)字,跟據(jù)輸入數(shù)字的大小在界面上會(huì)出現(xiàn)用來(lái)表示不同數(shù)字的不同高度的豎條,點(diǎn)擊排序按鈕豎條就會(huì)根據(jù)排序算法來(lái)跳動(dòng),整個(gè)跳動(dòng)過(guò)程會(huì)在界面中顯示,最后隨著排序的完成豎條會(huì)停止跳動(dòng),最終顯示排序結(jié)果。例如插入排序(升序)的可視化;在數(shù)值輸入?yún)^(qū)里輸入以下數(shù)值58、37、79、52、64、26、75、52、60、34,界面上會(huì)出現(xiàn)高度不一的豎條,然后點(diǎn)擊插入排序按鈕,58為第一關(guān)鍵字,因?yàn)榍懊鏇](méi)有數(shù)值,所以不比較;37為第二關(guān)鍵字與前面的58進(jìn)行比較小于58,所以58的豎條向后移動(dòng)到紅色豎條的位置;第三關(guān)鍵字是79與前面的37、58進(jìn)行比較,79大于58,所以豎條不移動(dòng)。按照此過(guò)程進(jìn)行逐一比較,排序完成后豎條會(huì)按照26、34、37、52、52、58、60、64、75、79,的順序排列在界面上。如果想要完成其他的排序方法,點(diǎn)擊重置按鈕就然后按照上面的過(guò)程就可以。如圖2—5所示: 三、結(jié)論 數(shù)據(jù)結(jié)構(gòu)排序算法的可視化將書本上的抽象知識(shí)轉(zhuǎn)變?yōu)楦鼮槿菀桌斫獾膭?dòng)態(tài)形式,不僅可以為學(xué)生減少學(xué)習(xí)的難度,還可以提高學(xué)生的學(xué)習(xí)積極性,更容易讓學(xué)生掌握各種排序方法。 參考文獻(xiàn): [1] 張乃孝.算法與數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言描述-第二版)[M].北京:高等教育出版社,2006. [2] 達(dá)爾文(Darwin,F(xiàn).I).Java經(jīng)典實(shí)例[M].北京:中國(guó)電力出版社,2009. Design of the data structure algorithm visualization YANG Xiao-bo,ZHANG Lin,ZHANG Long-hui,PANG Shuang-shuang (Information Engineering College ,Tibet Nationalities University,Xianyang 712082,China) Abstract:Visualization has become an indispensable technology in the process of development of modern information technology,and realizes the visualization of data structures sorting can serve teaching better,become indispensable in the process of teaching,teaching software. Sorting data structures visualization can be used to sort the various dynamic way to show in front of teachers and students,help the teachers,but also helps students understand and learn. Key words:data structure ;sort;visualization [責(zé)任編輯 仲 琪]