氣泡排序(c語言)

2021-10-14 11:57:58 字數 1311 閱讀 3275

氣泡排序演算法詳解:

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...