思路分析:
遍历数组,将当前元素的索引记为minIndex,将当前元素的值记为min,判断以后的每一个元素是否小于min,如果小于,则把这个数赋值给min,索引赋值给minIndex,循环一次后,交换两个元素的值
package com.monster.sort;
import java.util.Arrays;
/**
* @author Monster
* @version v1.0
* @time 03-18-2021 14:47:04
* @description:
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 100);
}
System.out.println(Arrays.toString(arr));
sortBySelect(arr);
System.out.println(Arrays.toString(arr));
}
public static void sortBySelect(int[] arr) {
// 时间复杂度O(n^2)
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
int min = arr[minIndex];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
minIndex = j;
min = arr[minIndex];
}
}
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
}
判断minIndex != i 可以减少交换次数,提高排序效率