基本介绍
选择排序(Selection Sort)通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录。并和第 i 个记录交换。
代码实现
public class SelectSort {
public static void select(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
// 交换
if (min != i) {
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
}
复杂度分析
选择排序最大的特点就是交换移动数据的次数很少。在最好的情况下,交换为 0 次,最差的时候交换次数为 n-1 次,最终的排序时间是比较与交换的次数总和。所以,总的时间复杂度为 O(n^2)。