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