基本介绍
按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。
时间复杂度:O(n2)
图示
代码
【思路】
- 选择排序一共有 数组大小 - 1 轮排序
- 每1轮排序,又是一个循环, 循环的规则(代码)
2.1 先假定当前这个数是最小数
2.2 然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
2.3 当遍历到数组的最后时,就得到本轮最小数和下标
2.4 交换 [代码中再继续说 ]
【代码】
public class SelectSort {
public static void main(String[] args) {
int[] arr = {101,34,119,1,-1,90};
for (int i = 0; i < arr.length - 1; i++) {
int temp = i;//记录每轮最小值的下标
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]){
min = arr[j];
temp = j;
}
}
if (temp != i){
arr[temp] = arr[i];
arr[i] = min;
}
System.out.println("第" + (i + 1) +"轮排序:" + Arrays.toString(arr));
}
}
}
【结果】