![]()
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\n",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]
}
}