本範例展示一個標準的冒泡排序實作,並在每一次比較與交換後即時列印陣列狀態,幫助初學者直觀理解排序流程。
public class BubbleSortDemo {
public static void main(String[] args) {
int[] nums = {12, 24, 34, 14, 45, 17, 65, 51, 25};
System.out.println("冒泡排序演示");
System.out.print("初始資料 ");
for (int n : nums) System.out.print(n + " ");
System.out.println();
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - 1 - i; j++) {
if (nums[j] < nums[j + 1]) { // 由大到小
int tmp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = tmp;
System.out.print(nums[j + 1] + "和" + nums[j] + "換位置 ");
} else {
System.out.print(" ");
}
for (int n : nums) System.out.print(n + " ");
System.out.println(" 完成一次比較");
}
System.out.println("本輪比較結束");
}
System.out.println("結束");
for (int n : nums) System.out.print(n + " ");
}
}
冒泡排序演示
初始資料 12 24 34 14 45 17 65 51 25
24和12換位置 24 12 34 14 45 17 65 51 25 完成一次比較
34和12換位置 24 34 12 14 45 17 65 51 25 完成一次比較
...
本輪比較結束
結束
65 51 45 34 24 25 17 14 12
i),內層迴圈控制每輪比較次數(j)。nums.length - 1 - i 避免重複比較已排序的尾部元素。