冒泡排序:
相鄰兩個元素進行比較,如果符合條件就換位。
例如有一個數組:{3,1,2,8,5,10,4,12}。
int[] a=new int[]{3,1,2,8,5,10,4,12};
第一輪循環:
第一輪循環,a[0] 和 a[1] 比較,a[0] > a[1] ,則交換元素,然後 a[1] 和 a[2] 比較,a[2] 和a[3] 比較,直到結束,最終 a[7] 爲最大值。
每一輪排序,最後一個數爲最大值,即第一輪冒泡結束後,a[7] = 12 。
第二輪循環:
第二輪循環,a[0] 和 a[1] 比較,a[0] <a[1] ,符合,然後 a[1] 和 a[2] 比較,a[2] 和a[3] 比較,直到結束,最終 a[6] 爲最大值。
每一輪排序,最後一個數爲最大值,即第二輪冒泡結束後,a[6] = 10 。
第三輪循環:
第三輪循環,a[0] 和 a[1] 比較,a[0] <a[1] ,符合,然後 a[1] 和 a[2] 比較,a[2] 和a[3] 比較,直到結束,最終 a[5] 爲最大值。
每一輪排序,最後一個數爲最大值,即第三輪冒泡結束後,a[5] = 8 。
最終結果:
代碼分析:
完成冒泡的函數:
public static void BubbleSort(int[] a) {
for(int x=0;x<a.length-1;x++) {
for(int y=0;y<a.length-x-1;y++) { //-x:讓每一次比較的元素數少x個。-1:防止腳標過界。
if(a[y]>a[y+1]) {
int t;
t=a[y+1];
a[y+1]=a[y];
a[y]=t;
}
}
}
}
打印數組函數:
public static void Print(int[] a) {
System.out.print("[ ");
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
System.out.println("]");
}
main() 函數:
public static void main(String[] args) {
int[] a=new int[]{3,1,2,8,5,10,4,12};
Print(a);
BubbleSort(a);
Print(a);
}
最終輸出結果: