文章摘要: 工作原理是首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
简介
简要说明
- 工作原理是首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
主要功能
- 在未排序的数组中找到最小(或最大)元素,并将其放到正确的位置。
- 通过重复选择剩余元素中的最小(或最大)元素,逐步构建有序序列。
注意事项
- 选择排序是不稳定的排序算法,因为在选择最小元素时可能会改变相同元素的相对顺序。
- 它不适用于数据量大的情况,因为其时间复杂度较高。
适用场景
- 数据量较小的排序场景。
- 教学或演示排序算法原理时。
时间复杂度
- 最优、平均、最坏情况:O(n^2)
空间复杂度
- O(1),选择排序是原地排序算法。
Java 8
public class SelectionSort {
// 主方法调用选择排序
public static void main(String[] args) {
int[] array = {64, 25, 12, 22, 11};
selectionSort(array);
System.out.println("Sorted array: " + Arrays.toString(array));
}
// 选择排序方法
public static void selectionSort(int[] array) {
int n = array.length;
// 遍历数组所有元素
for (int i = 0; i < n - 1; i++) {
// 找到从i到n-1中最小元素的索引
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
// 将找到的最小元素与第i个位置的元素交换
int temp = array[minIndex];
array[minIndex] = array[i];
array[i] = temp;
}
}
}
注释
在这个Java案例中,selectionSort 方法实现了选择排序算法。外层循环控制排序的趟数,内层循环负责在未排序的元素中找到最小元素的索引。找到最小元素后,将其与未排序序列的第一个元素交换。这个过程一直重复,直到整个数组排序完成。