最值
题目描述
有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。最大值和最小值均只有一个。
输入格式
输入包括两行。 第一行为正整数n(1≤n≤10)。 第二行为n个正整数组成的序列。
输出格式
输出转换好的序列。数据之间用一个空格隔开。最后一个数后无空格。
样例输入
5
5 1 2 4 3
样例输出
1 3 2 4 5
思路:
注意一个点,第22行,最大值的位置可能会第一个,这样max_i会变掉。
#include<bits/stdc++.h>
using namespace std;
int a[100];
main(){
int n;
cin>>n;
int max_i,max_v=-1;
int min_i,min_v=1e9;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
if(max_v<a[i]){
max_v=a[i];
max_i=i;
}
if(min_v>a[i]){
min_v=a[i];
min_i=i;
}
}
swap(a[0],a[min_i]);
if(max_i==0){
max_i=min_i;
}
swap(a[n-1],a[max_i]);
for(int i=0;i<n;i++){
cout<<a[i];
if(i<n-1){
cout<<" ";
}
}
cout<<endl;
}