《大话数据结构》第9章 排序 9.3 冒泡排序(上)
9.3.1?最簡(jiǎn)單排序?qū)崿F(xiàn)
??????? 無(wú)論你學(xué)習(xí)哪種編程語(yǔ)言,在學(xué)到循環(huán)和數(shù)組時(shí),通常都會(huì)介紹一種排序算法來(lái)作為例子,而這個(gè)算法一般就是冒泡排序。并不是它的名稱(chēng)很好聽(tīng),而是說(shuō)這個(gè)算法的思路最簡(jiǎn)單,最容易理解。因此,哪怕大家可能都已經(jīng)學(xué)過(guò)冒泡排序了,我們還是從這個(gè)算法開(kāi)始我們的排序之旅。
?
??????? 冒泡排序(Bubble Sort)一種交換排序,它的基本思想是:兩兩比較相鄰記錄的關(guān)鍵字,如果反序則交換,直到?jīng)]有反序的記錄為止。冒泡的實(shí)現(xiàn)在細(xì)節(jié)上可以很多種變化,我們將分別就3種不同的冒泡實(shí)現(xiàn)代碼,來(lái)講解冒泡排序的思想。這里,我們就先來(lái)看看比較容易理解的一段。
/* 對(duì)順序表L作交換排序(冒泡排序初級(jí)版) */void BubbleSort0(SqList *L){ int i,j;for(i=1;i<L->length;i++){for(j=i+1;j<=L->length;j++){if(L->r[i]>L->r[j]){swap(L,i,j); /* 交換L->r[i]與L->r[j]的值 */}}}}??????? 這段代碼嚴(yán)格意義上說(shuō),不算是標(biāo)準(zhǔn)的冒泡排序算法,因?yàn)樗粷M足“兩兩比較相鄰記錄”的冒泡排序思想,它更應(yīng)該是最最簡(jiǎn)單的交換排序而已。它的思路就是讓每一個(gè)關(guān)鍵字,都和它后面的每一個(gè)關(guān)鍵字比較,如果大則交換,這樣第一位置的關(guān)鍵字在一次循環(huán)后一定變成最小值。如圖9-3-2,假設(shè)我們待排序的關(guān)鍵字序列是{9,1,5,8,3,7,4,6,2},當(dāng)i=1時(shí),9與1交換后,在第一位置的1與后面的關(guān)鍵字比較都小,因此它就是最小值。當(dāng)i=2時(shí),第二位置先后由9換成5,換成3,換成2,完成了第二小的數(shù)字交換。后面的數(shù)字變換類(lèi)似,不再介紹。
?
?
??????? 它應(yīng)該算是最最容易寫(xiě)出的排序代碼了,不過(guò)這個(gè)簡(jiǎn)單易懂的代碼,卻是有缺陷的。觀察后發(fā)現(xiàn),在排序好1和2的位置后,對(duì)其余關(guān)鍵字的排序沒(méi)有什么幫助(數(shù)字3反而還被換到了最后一位)。也就是說(shuō),這個(gè)算法的效率是非常低的。
出處:http://www.cnblogs.com/cj723/archive/2011/04/15/2016679.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的《大话数据结构》第9章 排序 9.3 冒泡排序(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《大话数据结构》第9章 排序 9.2 排
- 下一篇: 《大话数据结构》第9章 排序 9.3 冒