一、冒泡排序
1. 代码实现
public class Main {
public void bubbleSort(int[] arr) {
// 外层表示循环次数,循环 length - 1次
for (int i = 0; i < arr.length - 1; i++) {
// 该轮是否排交换过的标志变量,若没改变,则表示没进行过交换,已经排好
boolean swap = false;
// 每一轮排序(外层),会将大的值排到数组末端, 所以内层每轮到的数组位置是越来越小(length - i - 1)
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap = true;
swapInt(arr, j, j + 1);
}
}
if (!swap) {
break;
}
}
}
}
2. 图理解
3. 参考
二、简单选择排序
1. 代码实现
public void selectSort(int[] arr) {
int len = arr.length;
// 外层循环:i即可表示,如果产生小值要放入的位置。
for (int i = 0; i < len; i++) {
int value = arr[i];
int position = i;
// 选出小的值,记录小值的位置
for (int j = i + 1; j < len; j++) {
if (arr[j] < value) {
value = arr[j];
position = j;
}
}
// 交换最小值和当前外层遍历的位置
arr[position] = arr[i];
arr[i] = value;
}
}
2. 图理解
