排序过程
首先从0—N-1区间上选择一个最小值,将其与0位置上的元素进行交换,然后再在1—N-1范围上选取最小值与1位置上的元素进行交换。重复过程直到剩下最后一个元素,数组即为有序。
排序的各项指标
平均时间复杂度:O(N^2)
最坏时间复杂度:O(N^2)
空间复杂度:O(1)
是否稳定:不稳定
排序的实现
在这里插入代码片
public static void selectSort(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
minIndex = arr[minIndex] < arr[j] ? minIndex : j;
}
swap(arr, minIndex, i);
}
}
public static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}