/**
* 选择排序
* 在未排序的部分选择最小的元素,然后和未排序部分的第一个元素进行交换
* 时间o(n²)
*/
public class SelectionSort {
public static int[] sort(int[] nums) {
for (int i = 0; i < nums.length; i++) {
// 寻找[i,n)区间最小值
int minIndex = i;
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
// 交换i和minIndex
nums[i] = nums[i] + nums[minIndex];
nums[minIndex] = nums[i] - nums[minIndex];
nums[i] = nums[i] - nums[minIndex];
System.out.println(Arrays.toString(nums));
}
return nums;
}
public static void main(String[] args) {
sort(new int[]{8, 6, 2, 3, 1, 5, 7, 4});
}
}