总时间限制:
1000ms
内存限制:
65536kB
描述
给定包含N个元素的数组a[1],a[2],a[3],...,a[N],利用选择排序将其排成升序。
每次在未排序部分中选出最小元素(若有多个并列最小值,选择下标最大的那一个),交换到未排序部分的最前面。
输入
2行
第1行包含1个正整数N(1 < N <= 10000),代表数组元素个数
第2行包含N个整数,空格隔开
输出
N-1行,既依次输出每趟选择排序后的数组
样例输入
3 3 1 2
样例输出
1 3 2 1 2 3
代码:
#include <iostream>
#include <cmath>
using namespace std;
int a[1000];
int main()
{
int n;
cin>>n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n - 1; i++)
{
int min = i;
for (int j = i; j < n; j++)
{
if(a[j] <= a[min])
min = j;
}
swap(a[min], a[i]);
for(int k = 0; k < n; k++)
cout<<a[k]<<" ";
cout<<endl;
}
}