package sort; /**选择排序(小 ->大) * @author codelmh * @data 2021/11/18 */ public class SelectSort { public static void main(String[] args) { /** * 思路:选择排序是非常简单的一个排序方式 也是不常用的排序方式 * 缺点:时间复杂度(n²) 而且不稳定 * 将第一个 假设为最小值的下标 min = 0 * 然后将 arr[min]的值与数组中的所有值去比较 * 如果遇到 比 arr[min]的值还小的数 则将 这个数的下标 赋值给min * 然后在将 比较前的下标 i 与比较后的下标 min 进行调换 * 重复操作 */ int[] arr = {5, 9, 2, 7, 4, 1, 8, 3, 6}; boolean flag = false; for(int i = 0; i < arr.length-1; i++){ int min = i; for (int j = i+1; j < arr.length; j++){ if (arr[j] < arr[min]){ min = j; flag = true; } } //小优化: 如果min 已经是最小值的下标,则不在进行位置调换 if (flag) { // 小工具 位置调换 SortUtils.swap(arr, i, min); } } //小工具 打印数组 SortUtils.print(arr); } }