过程: 每次从未排序区间中找到最小的元素,将其放到已排序区间的末尾。
空间复杂度为O(1),是一种原地排序算法。选择排序的最好情况时间复杂度、最坏情况和平均情况时间复杂度都为O(n2)。 选择排序是一种不稳定的排序算法。
示意图:
import java.util.Arrays;
public class Main {
public static void selectSort(int[] arr) {
//i 代表无序区间的首元素下标
for(int i = 0;i < arr.length - 1;i++) { //下面有 j=i+1,所以 i 到 n-1
//查找最小值
int minIndex = i;
for(int j = i + 1;j < arr.length;j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 交换 arr[i] 与 arr[minIndex]
int tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
public static void main(String[] args) {
int[] arr = {1,3,2,6,4,0,8,5,9,7};
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
}
来源:CSDN
作者:码畜也有梦想
链接:https://blog.csdn.net/QinLaoDeMaChu/article/details/104185398