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);
}
}