题目描述
给你一个序列,按照从小到大的顺序重新排列,要求使用选择排序
输入
第一行是一个正整数m,代表测试样例的个数
对于每组测试样例,输入一行数字,第一个数字m,代表这组样例中数字的个数,接下来的m个数字代表所给序列
输出
对于每组输出样例,输出一行,输出按照从小到大顺序排列的结果
样例输入
3
2
2 1
5
9 5 1 4 3
6
2 3 8 1 5 6
样例输出
1 2
1 3 4 5 9
1 2 3 5 6 8
引用chatGPT作答,以下是C++的选择排序实现,可以用于解决这个问题:
#include <iostream>
#include <vector>
using namespace std;
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;
}
}
if (minIndex != i) {
swap(arr[i], arr[minIndex]);
}
}
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
selectionSort(arr);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
return 0;
}
对于每个测试样例,我们首先输入数字个数n和n个数字,然后使用选择排序对数字进行排序,最后输出排好序的数字。
已经做出来了