【2】选择排序算法
作者:野牛程序员:2023-03-12 13:52:21 其他阅读 2893
选择排序是一种简单的排序算法,其核心思想是每一次从待排序的元素中选择最小的元素,将其放在已排序的序列末尾,直到全部元素排序完成。
具体实现方法如下:
遍历数组,将当前位置设为最小值索引minIndex。
从当前位置后的元素中,寻找最小的元素,并记录其索引minIndex。
若当前位置不是最小值,则将最小值与当前位置交换。
重复1~3步,直到数组排序完成。
下面是使用C++实现选择排序的代码,同时包括动态演示过程:
#include <iostream>
using namespace std;
void selectionSort(int a[], int n) {
for (int i = 0; i < n-1; i++) {
int minIndex = i;
for (int j = i+1; j < n; j++) {
if (a[j] < a[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = a[i];
a[i] = a[minIndex];
a[minIndex] = temp;
}
cout << "Pass " << i+1 << ": ";
for (int k = 0; k < n; k++) {
cout << a[k] << " ";
}
cout << endl;
}
}
int main() {
int a[] = {64, 25, 12, 22, 11};
int n = sizeof(a) / sizeof(a[0]);
cout << "Original array: ";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
selectionSort(a, n);
cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}输出结果如下:
Original array: 64 25 12 22 11 Pass 1: 11 25 12 22 64 Pass 2: 11 12 25 22 64 Pass 3: 11 12 22 25 64 Pass 4: 11 12 22 25 64 Sorted array: 11 12 22 25 64
可以看到,每一轮排序后,都输出了当前数组的状态。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

