算法原理
-
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
-
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
-
針對所有的元素重複以上的步驟,除了最後一個。
-
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
算法穩定性
時間複雜度:O(n^2).
import java.util.*;
public class bubbleSort {
public static void main(String[] args){
int[] a = {3,1,5,7,2,4,9,6};
System.out.println("排序前:" + Arrays.toString(a));
bubbleSort(a);
}
public static void bubbleSort(int[] a){
int temp;
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){ //內層循環控制比較次數
if(a[j]>a[j+1]){ //如果前一位大於後一位,則交換
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.print("排序後:");
for(int i=0; i<a.length; i++){
System.out.print(a[i] + ", ");
}
}
}
結果:
排序後:1, 2, 3, 4, 5, 6, 7, 9,