package com.itheima.demo02.Iterator;
import java.util.Arrays;
/*
简单选择排序:
外层循环执行数组长度-1次
内层循环从i+1开始,找到i后的最小值 ,与i进行进行交换
*/
public class test {
public static void main(String[] args) {
int[] a = new int[10];
for (int i = 0; i < 10; i++) {
a[i] = (int) (Math.random() * 100);
}
System.out.println(Arrays.toString(a));
for (int i = 0; i < a.length - 1; i++) {
int min = i;
int temp;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}
if (min != i) {
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
System.out.println(Arrays.toString(a));
}
System.out.println(Arrays.toString(a));
}
}
复杂度分析
以下是选择排序复杂度:
平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 |
---|---|---|---|
O(n²) | O(n²) | O(n²) | O(1) |
总结与思考
选择排序的简单和直观名副其实,这也造就了它”出了名的慢性子”,无论是哪种情况,哪怕原数组已排序完成,它也将花费将近n²/2次遍历来确认一遍。即便是这样,它的排序结果也还是不稳定的。 唯一值得高兴的是,它并不耗费额外的内存空间。