DS排序–简单选择排序
题目描述
给出一个数据序列,使用简单选择排序算法进行升序排序
输入
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
输出
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
输入样例
2
6
21 25 49 25 16 8
8
30 13 70 85 39 42 6 20
输出样例
8 25 49 25 16 21
8 16 49 25 25 21
8 16 21 25 25 49
8 16 21 25 25 49
8 16 21 25 25 49
8 16 21 25 25 49
6 13 70 85 39 42 30 20
6 13 70 85 39 42 30 20
6 13 20 85 39 42 30 70
6 13 20 30 39 42 85 70
6 13 20 30 39 42 85 70
6 13 20 30 39 42 85 70
6 13 20 30 39 42 70 85
6 13 20 30 39 42 70 85
注意:会卡一下最后一行换行符的输出
#include <iostream>
using namespace std;
#define N 10000
int t, n, arr[N];
void show() {
for (int i = 0; i < n - 1; i++) {
cout << arr[i] << " ";
}
cout << arr[n - 1] << endl;
}
void selectSort() {
for (int i = 0; i < n - 1; i++) {
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) min_index = j;
}
swap(arr[i], arr[min_index]);
show();
}
}
int main() {
cin >> t;
while (t--) {
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
selectSort();
show();
if (t >= 1) cout << endl;
}
return 0;
}