冒泡排序原理:我覺得類似於拍集體照的時候老師指揮按大小個排隊
依次比較兩個相鄰的數組元素、滿足交換條件就交換二者位置,不滿足就繼續向下比較。
冒泡排序原理動態圖(摘自網絡)
Demo代碼
//冒泡排序(正序)
int[] arr = {3, 13, 11, 9, 8, 1, 6, 10};
for (int i = 0; i < arr.length; i++) {
//定義flag可以提升效率,避免已經排序完成還繼續做無用循環
boolean flag = true;
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
//將arr[j+1]賦給臨時變量
int temp = arr[j + 1];
//交換二者位置
arr[j + 1] = arr[j];
arr[j] = temp;
//標識排序未完成,繼續循環
flag = false;
}
}
if (flag) {
break;
}
System.out.println("第" + (i + 1) + "次排序結果:" + Arrays.toString(arr));
}
System.out.println("最終結果:" + Arrays.toString(arr));
不定義flag的輸出結果(循環了8次)
定義flag的輸出結果(循環了5次)