在无序数据中找到最小(最大)元素,放置到无序数组的起始位置
从剩余未排序的元素中寻找最小(最大)元素,放到无序数组的起始位置。
重复上述过程,直到所有元素有序。
一般默认待排序数组第一个为最小值,找待排序数组当中真正的最小值,找到真正的最小值和待排序数组的一个值进行交换,交换完成之后,真正的最小值到达正确位置。
时间复杂度:O(n^2)
import java.util.Arrays;public class SelectSort {public static void main(String[] args) {int[] arr = {5,7,4,2,0,3,1,6};sort(arr);System.out.println(Arrays.toString(arr));}public static void sort(int[] arr) {for(int i = 0;i<arr.length;i++) {// 定义变量存储最小值int min = arr[i];// 定义变量存储最小值的下标int pos = i;for(int j = i ;j<arr.length;j++) {if(arr[j]<min) {min = arr[j];pos = j;}}
// 真正的最小值和默认的最小值交换arr[pos] = arr[i];arr[i] = min;}}}