选择排序是一种简单但高效的排序算法。它的基本思想是从未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。
实现步骤
具体实现选择排序的步骤如下:
- 遍历数组:从数组的第一个元素开始,依次遍历到倒数第二个元素。假设数组长度为n,则需要进行n-1次遍历。
- 查找最小元素:在当前未排序部分中,通过比较找到最小的元素。
- 交换元素:将最小元素与当前位置的元素交换位置,将最小元素放到已排序部分的末尾。
- 继续循环:重复执行上述步骤,直到所有元素都被排序完成。
选择排序的关键点在于每次遍历时,都会找到当前未排序部分中的最小元素,并将其放置在已排序部分的末尾。这样,在每一次遍历后,已排序部分都会增加一个元素,未排序部分减少一个元素,直到最后所有的元素都被排序完成。
选择排序的时间复杂度为O(n^2),其中n是数组的长度。尽管在大规模数据排序时性能相对较差,但对于小规模或部分有序的数组,选择排序是一种简单有效的排序算法。
代码实现
下面是选择排序的示例代码(使用Java语言实现):
java
public class SelectionSort {
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;
}
}
if(minIndex != i){
// 将最小元素和当前位置交换
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
}
public static void main(String[] args) {
int[] arr = {64, 25, 12, 22, 11};
System.out.println("原始数组:");
for (int num : arr) {
System.out.print(num + " ");
}
selectionSort(arr);
System.out.println("\n排序后的数组:");
for (int num : arr) {
System.out.print(num + " ");
}
}
}