首先在未排序序列中找到最小的元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
第0次排序
首先认为4最小,然后依次比较
找到最小值1
由于是第0次排序,把找到的最小值1跟第0个数字交换位置
然后开始第1次排序,【再从未排序的数字中找到最小的值与第1个数字交换】
import java.util.Arrays; public class SelectSort { public static void main(String[] args) { int[] arr = { 0, 0, 100, 5, 3, 2,8 ,0, 9,5,4}; selectSort(arr); System.out.println(Arrays.toString(arr)); } public static void selectSort(int[] arr) { //共比较length-1轮 for(int i=0;i<arr.length-1;i++) { //每轮跟哪些数字比较 int min =arr[i]; //最小值的下标 int k =i; for (int j = i+1; j < arr.length; j++) { if (arr[j]<min) { min = arr[j]; k=j; } } arr[k]=arr[i]; arr[i] = min; } } }
输出
[0, 0, 0, 2, 3, 4, 5, 5, 8, 9, 100]