输入n个不同的正整数,把最大元素与最小的元素交换,其它数位置不变,最后并输出数组

问题遇到的现象和发生背景

输入n个不同的正整数,把最大元素与最小的元素交换,其它数位置不变,最后并输出数组。
用C++实现

我的解答思路和尝试过的方法

应该是要用max和min

我想要达到的结果

输入:
5
2 6 1 9 7
输出:
2 6 9 1 7

(1和9换了位置,因为一是这里面最小的,9是最大的,最大&最小互换位置)


#include <iostream>
using namespace std;

int max(int a[],int n){
    int m = a[0],index = 0;
    for(int i = 0;i < n;i++){
        if(a[i] > m){
            m = a[i];
            index = i;
        }
    }
    return index;
}
int min(int a[],int n){
    int m = a[0],index = 0;
    for(int i = 0;i < n;i++){
        if(a[i] < m){
            m = a[i];
            index = i;
        }
    }
    return index;
}
int main()
{
    int n;
    cin >> n;
    int a[n];
    for(int i = 0;i < n;i++){
        cin >> a[i];
    }
    int maxIndex = max(a,n), minIndex = min(a,n);
    int temp = a[maxIndex];
    a[maxIndex] = a[minIndex];
    a[minIndex] = temp;
    for(int i = 0;i < n;i++){
        cout << a[i] << " ";
    }
    return 0;
}