代昌宏
摘 要:數(shù)據(jù)結(jié)構(gòu)排序內(nèi)容是計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)的重難點(diǎn)內(nèi)容,常用的排序有冒泡排序、選擇排序和插入排序,不少大學(xué)生在學(xué)習(xí)過(guò)程中存在理解不清晰、學(xué)習(xí)不精準(zhǔn)等問(wèn)題,本文將分別對(duì)冒泡排序、選擇排序和插入排序等三種排序的概念、定義、實(shí)現(xiàn)原理等內(nèi)容,進(jìn)行簡(jiǎn)要的闡述,還希望可以為大學(xué)生更加有效的學(xué)習(xí)該部分內(nèi)容提供思路指引和經(jīng)驗(yàn)借鑒。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);排序算法;總結(jié)
排序算法是數(shù)據(jù)結(jié)構(gòu)學(xué)科學(xué)習(xí)的核心內(nèi)容,但該部分內(nèi)容學(xué)習(xí)難度系數(shù)相對(duì)較大,不少大學(xué)生在學(xué)習(xí)起來(lái)存在一定的難度,使得其最終的學(xué)習(xí)效果受到了一定的影響,還需要積極的提升對(duì)該模塊內(nèi)容的重視程度,并積極的摸索數(shù)據(jù)結(jié)構(gòu)常用排序算法,以進(jìn)一步的提升大學(xué)生對(duì)該部分內(nèi)容的學(xué)習(xí)效能。本文將就數(shù)據(jù)結(jié)構(gòu)常用排序算法進(jìn)行總結(jié),以讓學(xué)生更好的理解數(shù)據(jù)結(jié)構(gòu)的常用排序算法,提升學(xué)生的學(xué)習(xí)質(zhì)量。
一、冒泡排序
冒泡排序是一種穩(wěn)定排序算法,是數(shù)據(jù)結(jié)構(gòu)排序的最常用算法之一,有效的學(xué)習(xí)這種排序方法對(duì)于學(xué)生更好的進(jìn)行排序和算法設(shè)計(jì)具有積極的促進(jìn)作用,應(yīng)該引起我們的重視,以下將對(duì)該排序算法進(jìn)行具體闡述。其一,實(shí)現(xiàn)原理。所謂冒泡排序就是指將小的元素往前調(diào)整或者將大的元素往后調(diào)整的一種具體的數(shù)據(jù)結(jié)構(gòu)交換排序方法。例如,我們以從小到大為例進(jìn)行展示,在每一輪的排序過(guò)程中都要將相鄰的兩個(gè)數(shù)據(jù)(關(guān)鍵碼)進(jìn)行對(duì)比,如果遇到前面的數(shù)據(jù)比后面數(shù)據(jù)大的情況,那么就進(jìn)行第二輪交換,相反,如果出現(xiàn)遇到前面的數(shù)據(jù)比后面數(shù)據(jù)小的情況,則不進(jìn)行操作,如果遇到最小的數(shù)據(jù),則會(huì)該數(shù)據(jù)會(huì)像一個(gè)“氣泡”一樣,被推到該數(shù)組的最頂端,冒泡排序因此得名,而根據(jù)上面的定義我們可以知道在具體每一輪的對(duì)比過(guò)程中都能夠固定當(dāng)前對(duì)比數(shù)據(jù)中的一個(gè)最小值,且將其放置在最前面,如果對(duì)比的數(shù)據(jù)相同,則進(jìn)行下一輪,如果沒(méi)有所要對(duì)比的數(shù)值,則要通過(guò)前面的兩兩結(jié)合將其相鄰起來(lái),但不進(jìn)行交換,因而又稱冒泡排序是一種穩(wěn)定性排序。其二,核心代碼如下:
template
void bubsort(E A[],int n){