📅  最后修改于: 2023-12-03 15:12:21.822000             🧑  作者: Mango
选择排序是一种简单的排序算法,它的基本思想是在未排序的数列中选择最小的一项放在第一位,接着选择第二小的放在第二位,以此类推,直到所有的数按照大小顺序排列完毕。
选择排序的实现比较简单,可以用两次循环来完成。外循环从第一项到倒数第二项,内循环从外循环下一项开始到最后一项,查找最小项的下标,再将最小项与外循环的当前项交换位置。
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
int idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[idx]) {
idx = j;
}
}
int temp = arr[idx];
arr[idx] = arr[i];
arr[i] = temp;
}
}
选择排序的时间复杂度为$O(n^2)$。由于它在任何情况下都需要查找整个数组以找到最小值并将其移动到正确的位置,因此无论数组已经排序还是随机排序,它都需要$O(n^2)$次比较。
选择排序的优点是简单易懂,代码简洁,需要的额外空间极少。缺点是时间复杂度较高,在大型数据集上表现较差。比较适合于小型数据排序。
选择排序在小数据量的情况下表现良好,但一般情况下不是最优的排序算法。当面临大规模数据时,应该使用具有更高性能的排序算法,比如快速排序、归并排序等。