文章目录 1. 认识选择排序2. 图示2.1 图示12.2 图示2 3. 代码 1. 认识选择排序 双层for循环,每次选出最小的数放到i位置,时间复杂度O( n 2 n^2 n2),空间复杂度O(1);从未排序的序列中找到最小(或最大)的元素,并将其放到已排序序列的正确位置上。每次迭代都会从未排序部分中选择一个元素,并把它移动到已排序部分的末尾。 2. 图示 2.1 图示1 2.2 图示2 3. 代码 public static void selectionSort(int[] arr) { // 长度小于2就没必要比较了 if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr.length - 1; i++) { int minInx = i; for (int j = i + 1; j < arr.length; j++) { minInx = arr[j] < arr[minInx] ? j : minInx; if (minInx != i) { // 每次得到最小的数放到i位置 swap(arr, i, minInx); } } } } public static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; }