C語言基礎排序算法-冒泡排序
什麼是冒泡排序?
顧名思義,這種排序方法就像水中的氣泡一樣,從底逐漸往上冒,一次前進一步。我們來看一個例子,看看到底是怎麼冒泡的。假設有一個數組3,2,5,4,1,我們希望按照從小到大的順序排序,最後的結果爲1,2,3,4,5。記住冒泡算法的關鍵一點是每次相鄰的兩個元素進行比較,如果不滿足排序的要求(比如後面的一個元素大於前面的元素),則進行交換。基本原理如下:
(1) 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
(2)針對所有的元素重複以上的步驟,除了最後一個。
(3)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
冒泡排序一般要用兩層循環,所以冒泡排序的時間複雜度爲O(n2),n2代表n的平方。很多初學者朋友想用一層循環就來冒泡排序,這是做不到的。
冒泡排序的代碼如下:
void bubble_sort(int arr[],int size)
{
int i=0;
int j=0;
int temp = 0;
for(i=0;i<size - 1;i++)
{
for(j=0;j<size - 1 -i;j++)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
下面對代碼的執行過程進行詳細解釋。
開始的數組狀態爲: