题目描述
排序是一种必不可少的工具,生活工作中随处可见排序的应用。例如,平日我们整理文档的时候难免要按序号排序,现在用选择排序方法来解决问题。选择排序的方法是,将大小为N的数组分成S和U两个部分,代表已经排序和未排序的部分。每次操作均从U中挑选一个最小元素,跟U中的第一个元素交换,随后将U中的第一个元素归入S中。即,每次操作结束后S将增加一个元素,U将减少一个元素。做完(N-1)次操作即可完成整个选择排序。如此实用的方法,大家动手尝试下吧。
输入格式
可能有多个测试输入,第一行给出总共的测试输入的个数。
对于每个测试输入,第一行包含一个正整数N,第二行包含一个大小为N的无序数组(0<N<1000)。
输出格式
输出每次数组做选择排序得到的结果,共计(N-1)行数据。数据之间用一个空格隔开,行末不能有多余的空格。
样例输入
1
5
2 5 4 1 3
样例输出
1 5 4 2 3
1 2 4 5 3
1 2 3 5 4
1 2 3 4 5
代码部分
#include<iostream>
using namespace std;
int main()
{ int N;
int n;
int t;
cin >> N;
while(N and scanf("%d", &t) != EOF){
cin >> n;
int arr[n];
for(int i=0;i<n;i++){
cin >> arr[i];
}
for (int i = 0; i < n-1; i++) {
int min = i;
for (int j = i; j < n; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (min != i) {
swap(arr[i], arr[min]);
for (int k = 0; k < n; k++)
{
if(k==(n-1))cout << arr[k];
else cout << arr[k] << " ";
}
cout << endl;
}
}
N--;
}
}
浙公网安备 33010602011771号