冒泡排序

1. 基本思想

(1) 核心

通過交換使相鄰的兩個數變成小數在前大數在後。

(2) 過程

1) 比較相鄰的元素,如果第一個比第二個大,就交換。

2) 這樣對數組的第0個數據N-1個數據進行一次遍歷後,最大的一個數據就“沉”到數組第N-1個位置。

3) N=N-1, 如果N不爲0就重複前面二步,否則排序完成

2. 算法實現(C語言)

void bubblesort(int arr[], int len)
{
	int i, j;
	for (i = 0; i < len; i++)//已經排好序的個數
		for (j = 1; j < len-i; j++)//兩兩交換過程
			if (arr[j-1] > arr[j])
				swap(&arr[j-1], &arr[j]);
}

其中swap爲交換函數

void swap(int *a, int *b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

3. 性能分析 

(1) 時間複雜度:用基本語句執行次數的數量級來衡量

 基本語句是比較和交換語句,平均時間複雜度是O(n^2)

(2) 空間複雜度

兩兩交換需要一個額外的空間,故空間複雜度爲O(1)。

 (3) 穩定性

相鄰的兩個元素交換,相同元素之間的相對位置並沒有改變,故穩定。

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