题目描述 使用选择排序对输入的n个数字进行升序排列。 可知每趟选择排序会选择一个当前最小数字到前面,一共需要n-1趟选择操作。 依次输出每趟排序的结果。 输入 第一行一个数n, 第二行n个待排序的数字。 输出 n-1行,每行n个用空格隔开的数字,表示这一次的结果。
时间: 2024-03-25 08:35:22 浏览: 91
以下是一个C++实现的示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
swap(nums[i], nums[minIndex]);
for (int j = 0; j < n; j++) {
cout << nums[j] << " ";
}
cout << endl;
}
return 0;
}
```
首先读入正整数的个数n,然后使用`vector`容器存储这n个待排序的数字。接着使用两个嵌套的`for`循环实现选择排序,其中外层循环表示进行n-1趟选择操作,内层循环从待排序数字中找出当前最小的数字,并记录其下标。在内层循环结束后,将当前最小数字交换到前面的位置上,并输出此时的结果。最后输出排序后的整数。
阅读全文