选择排序,顾名思义,就是选择嘛,选择最小的值或者最大的值。
效果图:
public class SelectSort {
public int[] sort(int[] sorceArray) {
int[] arr = Arrays.copyOf(sorceArray, sorceArray.length);
for (int i = 0; i < arr.length - 1; i++) {//最多需要排arr.length-1次就排完了
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) { //min是未排序数据中最小值的索引,在一次遍历中可能发生着多次改变。
min = j; //遍历完之后就记录下了未排序数据里最小值的索引min
}
}
if (min != i) {//说明未排序数据里有的值比arr[i]更小
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp; //完成交换
}
}
return arr;
}
public static void main(String[] args) {
int[] arr = {2, 3, 4, 23, 5, 6, 7, 3, 2, 23, 43, 12, 32};
SelectSort sort = new SelectSort();
int[] sort1 = sort.sort(arr);
System.out.println(Arrays.toString(sort1));
}
}
关键点在于min记录的是未排序数据中最小值的索引。