选择排序
/**
* Selection Sort : 选择排序
* n个数进行排序,查找最大的数与第 n 位交换;
* 然后从前 n-1 位中查找最大的数与第 n-1 交换; ...
* 时间复杂度:O(n2)
*/
public class SelectionSort {
/**
* 查找返回数组中最大值的索引
* @param arr
* @return 数组中最大值的索引
*/
private static int findMaxPos(int[] arr, int n) {
int max = arr[0];
int pos = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
pos = i;
}
}
return pos;
}
public static void selectionSort(int[] arr) {
for (int n = arr.length; n > 1; n--) {
int pos = findMaxPos(arr, n);
int temp = arr[pos];
arr[pos] = arr[n - 1];
arr[n - 1] = temp;
}
}
}