OJ地址:https://vjudge.net/problem/HDU-2016
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0Sample Output
1 2 3 4
1 4 3 2 5程序代码:
using namespace std;
int main(){
  int n;
  while(scanf("%d",&n)!=EOF&&n){
    int a[101];
    int min=INT_MAX;
    int x;
    for(int i=0;i<n;i++){
      scanf("%d",&a[i]);
      if(a[i]<min){
        min=a[i];
        x=i;
      }
    } 
    swap(a[x],a[0]);
    printf("%d",a[0]);
    for(int i=1;i<n;i++){
      printf(" %d",a[i]);
    }
    printf("\n");
  }
  return 0;
}思路:
这里我们使用了swap()函数来交换元素,降低时间复杂度;
swap()函数请参考:algorithm头文件下的常用函数之max()、min()、abs()、swap()、reverse()、next_permutation()、fill()
运行结果:

                










