选择排序是一种基于比较的排序算法,其思想是每次从未排序的元素中选择最小(或最大)的元素,放到已排序序列的末尾。
Java代码示例:
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
int minIndex = i;
for (int j = i+1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
时间复杂度:O(n^2)
空间复杂度:O(1)
优点:
- 简单易实现
- 不占用额外空间缺点:
- 时间复杂度高,不适合处理大规模数据
- 对于相同的元素,选择排序无法保持它们原来的相对位置
使用示例:
int[] arr = {5, 2, 8, 4, 7};
selectionSort(arr);
System.out.println(Arrays.toString(arr)); // [2, 4, 5, 7, 8]
总结:
选择排序是一种简单易实现的排序算法,时间复杂度为O(n^2),不适合处理大规模数据。它的优点是不占用额外空间,缺点是对于相同的元素无法保持原来的相对位置。在实际应用中,选择排序常用于小规模数据的排序场景。