氣泡排序演算法詳解:
1.氣泡排序簡介: 氣泡排序是交換排序演算法中的乙個簡單演算法,是比較基礎的。 它的特點是每一趟排序能確定乙個或多個關鍵字的最終位置。
2.氣泡排序原理介紹(假設按公升序排序):對於給定n個記錄,從第乙個記錄開始依次對相鄰的兩個記錄進行比較,當前面的記錄大於後面的記錄時,交換位置,進行一輪比較和換位後,n個記錄的最大記錄將位於第n位,然後對前(n-1)個記錄進行第二輪比較;重複該過程,直到記錄剩下乙個為止。
3.舉例說明:
例子1:
假設待排序序列為:6、5、4、3、2、1;
第一趟排序:5、4、3、2、1、6;
第二趟排序:4、3、2、1、5、6;
第三趟排序:3、2、1、4、5、6;
第四趟排序:2、1、3、4、5、6;
第五趟排序:1、2、3、4、5、6;
特點:(1)一趟排序可以確定乙個關鍵字的最終位置。
(2)共有6個元素,需要5趟排序。
例子2:
假設待排序序列為:8、12、20、10、18、24;
第一趟排序:8、12、10、18、20、24;
第二趟排序:8、10、12、18、20、24;
第三趟排序:8、10、12、18、20、24;
特點:(1)一趟排序可以確定多個關鍵字的最終位置。
(2)共有6個元素,2趟排序即可完成排序。
(3)如果一趟排序沒有進行關鍵字的位置交換,則說明排序已完成。
總結:(1)氣泡排序中,一趟排序可以確定多個關鍵字的最終位置。
(2)假設有n個關鍵字,則氣泡排序至多進行n-1趟排序。
(3)如果一趟排序沒有進行關鍵字的位置交換,則說明排序已完成。
4.**實現:
**說明:儲存關鍵字的陣列是從下標1(即a[1])開始儲存的,下標0用作交換兩個關鍵字的中間變數,即a[0]
帶注釋的:
#include
intmain()
//下面是氣泡排序演算法部分
int m=6-
1;//m的值是待排序關鍵字的個數減一,即至多進行排序的趟數
int flag=1;
//flag用來判斷某一趟排序中是否進行了關鍵字的位置交換
while
(m>
0&& flag==1)
} m--
;//完成一趟排序後,最後乙個元素的下標減一
}//排序完成輸出陣列
printf
("氣泡排序後的結果為:");
for(i=
1; i<=
6; i++
)}
C語言 氣泡排序
氣泡排序 兩兩比較相鄰記錄的關鍵碼,如果反序則交換,直到沒有反序記錄為止 將整個待排序的記錄序列分成有序區和無序區,初始時有序區為空,無序區包括所有待排序的記錄 對無序區從前向後依次將相鄰記錄的關鍵碼進行比較,若反序則交換,從而使得關鍵碼小的記錄向前移,關鍵碼大的向後移 像水中的氣泡,體積大的先浮起...
氣泡排序 C語言
c語言是比較簡單基礎的排序方式,排序效率並不高,但是很穩定。通過rand隨機生產10個小於20的數來測試排序。氣泡排序 include include include void bubblesortbetter int a,int n 改進 if flag 0 break void bubbleso...
C語言 氣泡排序
直接看 吧 include void bubblesort int r,int len if exchange 如果沒有發生交換,提前終止演算法 return int main bubblesort aa,10 for int i 0 i 10 i printf d aa i printf n re...