### 思路
简单选择排序是一种原地排序算法,通过在未排序部分中选择最小(或最大)元素并将其放置在已排序部分的末尾来进行排序。每次选择后输出当前排序结果。
### 伪代码
1. 读取输入的待排序关键字个数`n`。
2. 读取`n`个待排序关键字并存储在数组中。
3. 对数组进行简单选择排序:
- 从数组的第一个元素开始,依次选择未排序部分中的最小元素。
- 将选中的最小元素与未排序部分的第一个元素交换。
- 输出当前排序结果。
4. 重复步骤3直到排序完成。
### C++代码
#include <iostream>
#include <vector>
using namespace std;
void printArray(const vector<int>& arr) {
for (size_t i = 0; i < arr.size(); ++i) {
if (i > 0) cout << " ";
cout << arr[i];
}
cout << endl;
}
void selectionSort(vector<int>& arr) {
int n = arr.size();
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;
}
}
swap(arr[i], arr[minIndex]);
printArray(arr); // 输出当前排序结果
}
}
int main() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
selectionSort(arr);
return 0;
}
### 总结
简单选择排序通过在未排序部分中选择最小(或最大)元素并将其放置在已排序部分的末尾来进行排序。每次选择后输出当前排序结果。