动态展示
排序算法 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 排序方式 | 稳定性 |
---|---|---|---|---|---|---|
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 内部排序 | 不稳定 |
算法思想
顾名思义选择排序就是选择,选择什么?选择最值,在一轮循环结束,选出待排序数据中的最值,并与当前位置的元素进行交换,这样进行length次选择即可得到有序序列。
public class SelectSort {
public static void main(String[] args) {
int[] numbers = new int[]{3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
//下面外层循环,每一轮负责将待排序数据中的最值换到待排序数据的最左边
for (int i = 0; i < numbers.length; i++) {
int min = i;//int max = i;
//内层循环每一轮负责找到最值数据的索引值
for (int j = i; j < numbers.length; j++) {
if(numbers[j]<numbers[min]){
//numbers[j]>numbers[max] max = j;
min = j;
}
}
//进行最值和当前位置数据的交换
int temp = numbers[min];
numbers[min] = numbers[i];
numbers[i] = temp;
}
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i]+" ");
}
}
}