C語言基礎排序算法-冒泡排序

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;
			}
		}
	}
}

 下面對代碼的執行過程進行詳細解釋。

 

 

開始的數組狀態爲:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章