算法思路
选择排序的实现思想:
假定实现的是:从小到大的排序
在每趟排序中,设置两个变量:min、minIndex。
- 对于n个数据,需要进行n-1趟排序。每趟排序,最终确定一个在本趟排序中最小的数,放在minIndex的位置上(实现只有这两个位置的 交换操作)
- 对于第i趟排序,是从第i+1个数据开始,向后遍历,确定该趟排序中最小的数据并使用min保留其值、minIndex保留它的数组索引值,最终:arr[i]与arr[minIndex]进行交换。
算法实现
public static void selectSort(int[] arr) {
int min;
int minIndex;
for (int i = 0; i < arr.length - 1; i++) {
min = arr[i];
minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
// 出现比min还要小的数据,用min、minIndex进行记录
min = arr[j];
minIndex = j;
}
}
if (minIndex != i) {
// arr[i]与arr[minIndex]进行交换
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}