一、冒泡排序
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. 图理解
