import java.util.Arrays; /** * 选择排序 * 基本思想是: * 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换, * 第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换, * 第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…, * 第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换,…, * 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换, * 总共通过n-1次,得到一个按排序码从小到大排列的有序序列 */ public class SelectSort { public static int[] selectSort(int[] arr){ int length = arr.length; int minIndex = 0; int temp = 0; for (int i = 1; i < length; i++) { minIndex = i - 1; for (int j = i; j < length; j++) { if (arr[j]<arr[minIndex]){ minIndex = j; } } if (minIndex!=i-1){ temp = arr[minIndex]; arr[minIndex] = arr[i-1]; arr[i-1] = temp; } System.out.printf("第%d趟的结果是:%s ",i, Arrays.toString(arr)); } System.out.println("从小到大排序结果为:"+Arrays.toString(arr)); return arr; } public static void main(String[] args){ selectSort(new int[]{101,34,119,1}); //第1趟的结果是:[1, 34, 119, 101] //第2趟的结果是:[1, 34, 119, 101] //第3趟的结果是:[1, 34, 101, 119] //从小到大排序结果为:[1, 34, 101, 119] } }