#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
int a[100];
while(scanf("%d",&n)!=EOF&&n!=0&&n<100)
{
int i,j,minn=99999999;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(minn>a[i])
{
minn=a[i];
j=i;
}
}
int temp=a[j];
a[j]=a[0];
a[0]=temp;
int flag=0;
for(i=0;i<n;i++)
{
if(flag==0)
{
printf("%d",a[i]);
flag=1;
}
else if(flag==1)
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
这个问题实际上就是怎么不改变一个数组的原本有序的位置关系的同时去交换其中某些元素的位置,这里是采取通过从外界引入一个变量来作为比较的媒介,然后记住最小值的下标 最后交换第一个元素和最小值的位置达成目的。
其实也可以考虑这样
:int min=a[0];
for(int i=0;i<n;i++)
{
if(min>a[i])
{
min=a[i];
j=i;
}
再做交换。。
}