题目描述:
输入n个整数的数列,请找出数列中最小数所在的位置(有多个最小数,则选最左边的那个最小数),把它与数列的第一个数对调,其它数的位置不能改变,输出此数列。
输入格式:
第一行输入n
第二行共n个数,以空格隔开。
输出格式:
输出对调后的n个数,用空格隔开。
样例输入:
5 18 20 6 10 12
样例输出:
6 20 18 10 12
提示:
n<=10000
此题用于理解选择排序。
时间限制: 1000ms
空间限制: 128MB
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
const int MAXN = 32767;
int n,a[MAXN],post=1;
void input_data(){
cin >> n;
for (int i=1;i<=n;i++)
cin >> a[i];
}
void trytoget_ans(){
int min = a[1];
for (int i=2;i<=n;i++)
if (a[i]<min)
{
min = a[i];
post = i;
}
a[post] = a[1];
a[1] = min;
}
void output_ans(){
cout <<a[1];
for (int i=2;i<=n;i++)
cout << " " << a[i];
}
int main()
{
input_data();
trytoget_ans();
output_ans();
return 0;
}