基础算法
冒泡排序
冒泡排序的三种方式(不断优化)
/*常规冒泡*/
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 如果左边的数大于右边的数,则交换,保证右边的数字最大
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
改进一:
public static void bubbleSort(int[] arr) {
// 初始时 swapped 为 true,否则排序过程无法启动
boolean swapped = true;
for (int i = 0; i < arr.length - 1; i++) {
// 如果没有发生过交换,说明剩余部分已经有序,排序完成
if (!swapped) break;
// 设置 swapped 为 false,如果发生交换,则将其置为 true
swapped = false;
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j]