冒泡排序解剖

冒泡排序解剖

算法介紹

冒泡排序是通過一系列的“交換”動作完成的,是交換類排序的一種。

首先第一個記錄和第二個記錄比較,如果第一個大嗎,則兩者交換,否則不交換;

然後第二個記錄和第三個記錄比較,如果第二個大,則兩者交換,否則不交換……一直按這種方式進行下去,最終最大的那個記錄被交換到了最後,一趟冒泡排序完成。

然後進行第二趟冒泡排序,對前n-1個記錄進行同樣的操作,使關鍵字次大的記錄被安置到第n-1個記錄的位置上……一直這樣進行下去,直到在一趟排序過程中沒有進行過交換記錄的操作,這也是冒泡排序算法的結束條件

算法代碼(Java)

 

 public static <T extends Comparable<? super T>> void bubbleSort(T[] a) {
		int i,j,flag;
		T temp;
		for(i=a.length-1;i>0;i--) {//最多進行a.length-1趟排序
			flag = 0;
			for(j=0;j<i;j++) {////對當前無序區間a[0......i]進行排序
				if(a[j].compareTo(a[j+1])>0) {//大值交換到後面
					temp = a[j+1];
					a[j+1] = a[j];
					a[j] = temp;
					flag = 1;
				}
			}
			if(flag == 0) {//結束條件:某一趟排序是否有交換
				return;
			}
		}
	}

算法分析

最壞時間複雜度:O(n^2)

最好時間複雜度:O(n)

平均時間複雜度:O(n^2)

空間複雜度:O(1)

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