DS排序–简单选择排序
题目描述
给出一个数据序列,使用简单选择排序算法进行升序排序。
输入
第一行输入 t t t,表示有 t t t个测试示例
第二行输入 n n n,表示第一个示例有 n n n个数据 ( n > 1 ) (n>1) (n>1)
第三行输入 n n n个数据,都是正整数,数据之间用空格隔开
以此类推
输出
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
输入样例:
2
5
12 58 36 47 96
10
1 3 6 9 0 8 5 7 4 2
输出样例:
12 58 36 47 96
12 36 58 47 96
12 36 47 58 96
12 36 47 58 96
0 3 6 9 1 8 5 7 4 2
0 1 6 9 3 8 5 7 4 2
0 1 2 9 3 8 5 7 4 6
0 1 2 3 9 8 5 7 4 6
0 1 2 3 4 8 5 7 9 6
0 1 2 3 4 5 8 7 9 6
0 1 2 3 4 5 6 7 9 8
0 1 2 3 4 5 6 7 9 8
0 1 2 3 4 5 6 7 8 9
参考代码:
#include <bits/stdc++.h>
using namespace std;
void print(int *arr, int n) {
for (int i = 0; i < n; i++)
if (i != n - 1)
cout << arr[i] << " ";
else
cout << arr[i] << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n - 1; i++) {
int min = arr[i];
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < min) {
min = arr[j];
min_index = j;
}
}
swap(arr[i], arr[min_index]);
print(arr, n);
}
delete[] arr;
cout << endl;
}
return 0;
}