版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、main()intijtempinta[10]f(i=0ia[i1])temp=a[i]a[i]=a[i1]a[i1]=tempf(i=1i11i)printf(“%5d“a[i])printf(“n“)冒泡算法冒泡排序的算法分析與改進(jìn)交換排序的基本思想是:兩兩比較待排序記錄的關(guān)鍵字,發(fā)現(xiàn)兩個(gè)記錄的次序相反時(shí)即進(jìn)行交換,直到?jīng)]有反序的記錄為止。應(yīng)用交換排序基本思想的主要排序方法有:冒泡排序和快速排序。冒泡排序1、排序方法將被排序的記錄數(shù)
2、組R[1..n]垂直排列,每個(gè)記錄R看作是重量為R.key的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R:凡掃描到違反本原則的輕氣泡,就使其向上“飄浮“。如此反復(fù)進(jìn)行,直到最后任何兩個(gè)氣泡都是輕者在上,重者在下為止。(1)初始R[1..n]為無序區(qū)。(2)第一趟掃描從無序區(qū)底部向上依次比較相鄰的兩個(gè)氣泡的重量,若發(fā)現(xiàn)輕者在下、重者在上,則交換二者的位置。即依次比較(R[n],R[n1]),(R[n1],R[n2]),…,(
3、R[2],R[1]);對(duì)于每對(duì)氣泡(R[j1],R[j]),若R[j1].keyR[j].key,則交換R[j1]和R[j]的內(nèi)容。第一趟掃描完畢時(shí),“最輕“的氣泡就飄浮到該區(qū)間的頂部,即關(guān)鍵字最小的記錄被放在最高位置R[1]上。(3)第二趟掃描掃描R[2..n]。掃描完畢時(shí),“次輕“的氣泡飄浮到R[2]的位置上……最后,經(jīng)過n1趟掃描可得到有序區(qū)R[1..n]注意:Cmax=n(n1)2=O(n2)Mmax=3n(n1)2=O(n2)
4、冒泡排序的最壞時(shí)間復(fù)雜度為O(n2)。(3)算法的平均時(shí)間復(fù)雜度為O(n2)雖然冒泡排序不一定要進(jìn)行n1趟,但由于它的記錄移動(dòng)次數(shù)較多,故平均時(shí)間性能比直接插入排序要差得多。(4)算法穩(wěn)定性冒泡排序是就地排序,且它是穩(wěn)定的。5、算法改進(jìn)上述的冒泡排序還可做如下的改進(jìn):(1)記住最后一次交換發(fā)生位置lastExchange的冒泡排序在每趟掃描中,記住最后一次交換發(fā)生的位置lastExchange,(該位置之前的相鄰記錄均已有序)。下一趟排
5、序開始時(shí),R[1..lastExchange1]是有序區(qū),R[lastExchange..n]是無序區(qū)。這樣,一趟排序可能使當(dāng)前有序區(qū)擴(kuò)充多個(gè)記錄,從而減少排序的趟數(shù)。具體算法【參見習(xí)題】。(2)改變掃描方向的冒泡排序①冒泡排序的不對(duì)稱性能一趟掃描完成排序的情況:只有最輕的氣泡位于R[n]的位置,其余的氣泡均已排好序,那么也只需一趟掃描就可以完成排序。【例】對(duì)初始關(guān)鍵字序列12,18,42,44,45,67,94,10就僅需一趟掃描。需
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言設(shè)計(jì)--冒泡法排序
- 排序算法c語言版冒泡排序
- c語言冒泡、插入法、選擇排序算法分析
- 冒泡排序c++
- 選擇排序發(fā) 冒泡排序法
- 冒泡排序算法詳解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--冒泡排序法
- 單片機(jī) 冒泡排序
- c語言排序大全
- 數(shù)據(jù)結(jié)構(gòu) 利用冒泡排序算法進(jìn)行排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---希爾排序,冒泡排序,快速排序
- 軟件測試技術(shù)之冒泡排序檢測
- c語言 排序?qū)W生成績
- c語言常用排序方法大全
- 課程設(shè)計(jì)---設(shè)計(jì)排序典型算法(冒泡與快速排序)
- 重溫經(jīng)典排序思想--c語言常用排序全解
- 實(shí)現(xiàn)冒泡排序、直接插入排序和直接選擇排序的算法
- 計(jì)算機(jī)課程設(shè)計(jì)---冒泡排序
- 修正冒泡排序網(wǎng)絡(luò)的若干性質(zhì)研究.pdf
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---冒泡排序
評(píng)論
0/150
提交評(píng)論