交換排序——冒泡排序

交換排序思想:

        在無序區中比較,發現兩個元素順序相反時進行交換,知道全都有序。

        交換排序有 冒泡排序、快速排序。

冒泡排序java實現:

/**
	 * 冒泡排序
	 * @param array 待排序數據
	 */
	static void bubbleSort(int[] array) {
		int i, j, exchange;
		int tmp;
		int n = array.length;
		for(i = 0; i < n - 1; i++) {//進行n-1趟冒泡
			exchange = 0;
			for(j = n - 1; j > i; j--) {//從後向前冒出最小元素
				if(array[j] < array[j-1]) {
					tmp = array[j];
					array[j] = array[j-1];
					array[j-1] = tmp;
					exchange = 1;
				}
			}
			if(exchange == 0)
				return;
		}
	}

空間複雜度:O(1)

時間複雜度:

正序,最小時間複雜度:比較次數:n-1, 最小移動次數:0

反序,最大時間複雜度:比較次數:=n(n-1)/2=


                                     移動次數:=3n(n-1)/2=


平均時間複雜度:

每趟的比較次數固定,但是比較多少趟是未知的,平均比較趟數,代入上式計算得出。

冒泡排序是穩定排序。


發佈了36 篇原創文章 · 獲贊 16 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章