简单选择排序(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。算法复杂度O(n^2),一种稳定的排序算法。
//选择排序
public static void selectSort(int[]arr) {
//遍历所有的数
for (int i = 0; i < arr.length; i++) {
int minIndex=i;
//把当前遍历的数和后面所有的数依次进行比较,并记录下最小的数的下标,这里容易记错,是从i+1开始
for (int j = i+1; j < arr.length; j++) {
//如果后面比较的数比记录的最小的数小
if(arr[minIndex]>arr[j]){
//记录下最小的那个数的下标
minIndex=j;
}
}
//如果最小的数和当前遍历数的下标不一致,说明下标为minIndex的数比当前遍历的数要小
if(i!=minIndex){
int tmp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=tmp;
}
}
}
import java.util.Arrays;
//测试类
class SelectSort{
public static void main(String[] args) {
int[]arr=new int[]{5,3,1,5,2,4};
selectSort(arr);
//输出1 2 3 4 5 5
System.out.println(Arrays.toString(arr));
}
}