top1编程
← 返回题目
题解

【入门】移动数组元素

1 条题解

  • 0
    @ 2026-7-31 9:33:43

    解题思路

    把数组最小值和第一个数交换,最大值和最后一个数交换。

    先找最小值位置交换到开头,再找最大值位置交换到末尾。

    参考代码

    #include <iostream>
    using namespace std;
    int main() {
        int n, a[100];
        cin >> n;
        for (int i = 0; i < n; i++) cin >> a[i];
        // 找最小数的位置
        int mi = 0;
        for (int i = 1; i < n; i++) {
            if (a[i] < a[mi]) mi = i;
        }
        swap(a[0], a[mi]);
        // 找最大数的位置
        int ma = 0;
        for (int i = 1; i < n; i++) {
            if (a[i] > a[ma]) ma = i;
        }
        swap(a[n - 1], a[ma]);
        for (int i = 0; i < n; i++) cout << a[i] << ' ';
        cout << endl;
        return 0;
    }
    

    O(N) 时间,O(N) 空间

    • 1