C語言 氣泡排序法

2021-08-21 17:10:22 字數 1263 閱讀 3786

此題的解決思路為:對於一組數字的排序,我們通過迴圈比較兩個相鄰元素的大小,若為公升序排列則將最大值替換到最後。這樣依次類推進行多趟氣泡排序即可將這組數字公升序排列。

例如:10,9,8,7,6,5,4,3,2,1

通過一趟氣泡排序,我們將10置於最後一位。(9,8,7,6,5,4,3,2,1,10)

第二趟氣泡排序我們將9置於倒數第二位。(8,7,6,5,4,3,2,1,9,10)

以此類推,每次需要判斷交換兩元素的次數減少1。

具體**如下:

#include #include void bubble_sort(int arr, int sz)

} }}void print(int arr, int sz)

printf("\n");

}int main()

; int sz = sizeof(arr) / sizeof(arr[0]);

print(arr, sz);

bubble_sort(arr, sz);

print(arr, sz);

system("pause");

return 0;

}

基於此**我們還可以進行優化。

我們考慮到若一組資料部分有序,在進行若干趟氣泡排序的過程中,沒有任何一組兩個元素交換時,說明陣列已經排列完成,因此可以停止氣泡排序。這樣可以提高程式的效率。

此時我們引入乙個flag變數,並初始化為0,只要在趟數中有元素交換我們則令flag為1,若當有一趟氣泡排序沒有元素交換時,flag仍為0,此時加入判斷停止條件即可。

例如:10,1,2,3,4,5,6,7,8,9---->此時我們只需要進行一趟氣泡排序

優化**如下:

#include #include void bubble_sort(int arr, int sz)

} if (flag == 0)//沒有元素交換時,則停止氣泡排序

break; }}

void print(int arr, int sz)

printf("\n");

}int main()

; int sz = sizeof(arr) / sizeof(arr[0]);

print(arr, sz);

bubble_sort(arr, sz);

print(arr, sz);

system("pause");

return 0;

}

C語言 氣泡排序法

氣泡排序法 排序的規律有兩種 一種是公升序,從小到大 另一種是降序,從大到小。排序方法是一種很重要的,基本的演算法。冒泡法的基本思路是 每次將相鄰的兩個數比較,將小的調到前面,讓最大的元素不斷地往後移。例 有6個數 9,8,5,4,2,0 第一次對調情況如下圖,可以看到將最大的數字9調到了最後,經過...

氣泡排序法(C語言)

氣泡排序 相鄰兩個數兩兩比較,小的數向前移 上浮 大的數向後移 下沉 如同水中的泡泡上浮一般 氣泡排序圖示 如果有n個數,則要跑n 1次比較 每跑一次比較就會有乙個較大數 沉底 交換兩個數的次數會隨著跑的次數越來越多而變少。c語言 include intmain int t,i,j for i 0 ...

c語言 氣泡排序法

氣泡排序是一種簡單的排序演算法,它也是一種穩定排序演算法。其實現原理是重複掃瞄待排序序列,並比較每一對相鄰的元素,當該對元素順序不正確時進行交換。一直重複這個過程,直到沒有任何兩個相鄰元素可以交換,就表明完成了排序。以冒泡法 從小到大 為例 原理 比較相鄰的元素,將值大的元素交換到右邊 原始陣列資料...