BubbleSort氣泡排序演算法 C語言

2021-09-17 01:26:44 字數 1847 閱讀 5197

基本概念:

氣泡排序(bubble sort),是一種電腦科學領域的較簡單的排序演算法。

它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,

如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。

走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。

這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),

就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。

演算法原理:

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。

在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了第乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

示範**:

#include #define size 8

void bubble_sort(int a, int n);

void bubble_sort(int a, int n)

}}int main()

; int i;

bubble_sort(number, size);

for (i = 0; i < size; i++)

return 0;

}另一種可以參考的做法是(在此只給出關鍵實現部分,其餘部分請讀者自行實現),另外請注意item型別。

void refore(item *a,int index1,int index2)

void bsort(item *a,int index_top)

out_count++;

}}

個人理解與思路:

實現氣泡排序,是需要兩個相鄰元素進行比較,依次類推往下比較,直到最後一組的相鄰兩個元素

比較完畢即可。打個比方,現在有4個數字要進行比較,那麼我們一次就要進行3輪比較,我們可以

知道這個比較的輪數為陣列元素數減去1,即陣列元素數(arr)- 1 = 比較的輪數(len)。

也就是我們需要定義乙個迴圈來控制這個比較的輪數。

元素之間的比較是要從下標為0開始的數與下標為1開始的數進行比較的,所以我們需要宣告乙個變數i,

然後從下標0開始迴圈比較,依次類推到最後乙個元素,這個元素的下標是陣列元素個數減1。但是這個

比較迴圈必須是包含在輪數迴圈中的,可以說是乙個迴圈之間的巢狀。

然後就是進行比較了,比較第乙個和第二個下標處的值的大小,如果1比2大,這裡可以宣告乙個臨時

變數,用於儲存第乙個值,這時第乙個值就是null空值,然後將第二個下標處的值給第乙個下標處,

再把臨時儲存的變數賦值給第二個下標處。

c**:

#include /*實現氣泡排序演算法的bubble函式*/ 

/*傳遞引數arr陣列,並傳引數組中的元素個數len*/

void bubble(int arr, int len)

} }} /*主函式*/

int main() ;

/*被呼叫函式bubble宣告*/

bubble(arr, 9);

/*宣告乙個迴圈列印的變數*/

int i = 0;

/*用開始從第乙個數字列印,因為陣列中有10個數,所以i不能大於9*/

for (i=0;i<9;i++)

printf("\n");

return 0;

}

執行結果:

1 20 25 28 33 42 59 67 91

氣泡排序 bubble sort

氣泡排序是最基本的排序演算法,常被做為內部排序的第乙個排序演算法進行講解。它的原理非常簡單,只是一 個兩層迴圈,每次將最大或最小的放到陣列最後。演算法如下 b為陣列的起始位置,e為陣列的結果位置 int bubble int data,int b,int e return n 這個函式返回兩個整數比...

氣泡排序(Bubble Sort)

無論你學習哪種程式語言,在學到迴圈和陣列時,通常都會介紹一種排序演算法來作為例子,而這個演算法一般就是氣泡排序。並不是它的名稱很好聽,而是說這個演算法的思路最簡單,最容易理解。因此,哪怕大家可能都已經學過氣泡排序了,我們還是從這個演算法開始我們的排序之旅。氣泡排序 bubble sort 一種交換排...

氣泡排序 Bubble Sort

維基百科 氣泡排序 演算法思想 不斷的交換相鄰的兩個反序元素,使最小元素 上浮 或使最大元素 下沉 每一趟 冒泡 都會確定乙個最大的元素或最小的元素,同選擇排序類似,演算法總共只需進行n 1趟。將乙個陣列豎著放,低位址在上面,高位址在下面,所謂 上浮 就是較小的元素不斷向低位址靠近,所謂 下沉 就是...