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