本题要求从键盘读入n个整数,对这些数做选择排序。输出选择排序每一步的结果和最终结果。 输入格式: 输入的第一行是一个正整数n,表示 在第二行中会有n个整数。 输出格式: 输出选择排序每一步的结果和最终结果。 输入样例: 在这里给出一组输入。例如: 5 3 7 2 9 1 输出样例: 在这里给出相应的输出。例如: step 1: 1 7 2 9 3 step 2: 1 2 7 9 3 step 3: 1 2 3 9 7 step 4: 1 2 3 7 9 sorted array: 1 2 3 7 9 用c++语言实现
时间: 2024-03-01 13:54:51 浏览: 93
好的,这是一个非常经典的排序算法题目。下面是 C++ 代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
void print(vector<int>& nums) {
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] << " ";
}
cout << endl;
}
void selectionSort(vector<int>& nums) {
for (int i = 0; i < nums.size() - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < nums.size(); j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
swap(nums[i], nums[minIndex]);
}
cout << "step " << i + 1 << ": ";
print(nums);
}
cout << "sorted array: ";
print(nums);
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
selectionSort(nums);
return 0;
}
```
代码的主要思路是:从前往后扫描整个序列,每次选择当前未排序部分的最小值,并将其与当前未排序部分的第一个元素进行交换。
在代码中,`print` 函数用于打印当前数组的元素,`selectionSort` 函数用于实现选择排序的过程,主函数中读取输入,然后调用 `selectionSort` 函数进行排序并输出结果。
希望能对你有所帮助!
阅读全文