Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

In mảng theo thứ tự tăng giảm xen kẽ C++

Cho mảng số. In các phần tử theo thứ tự: 2 phần tử tăng, 3 phần tử giảm, 4 phần tử tăng, 5 phần tử giảm... Ví dụ: [1,4,0,2,7,9,3] → sắp xếp [0,1,2,3,4,7,9] → in: 0 1 | 9 7 4 | 2 3.

Hai con trỏ + cờ

Sắp xếp mảng. Dùng left=0, right=n-1, flag=2 (số phần tử in lần hiện tại). Nếu flag chẵn → in từ left tăng dần. Lẻ → in từ right giảm dần. Tăng flag sau mỗi lượt.

Ví dụ minh họa

#include <bits/stdc++.h>
using namespace std;

void printAlternate(int arr[], int n) {
    sort(arr, arr+n);
    int left = 0, right = n-1, flag = 2;
    
    while (left <= right) {
        if (flag % 2 == 0) {
            for (int i = left; i < left+flag && i <= right; i++)
                cout << arr[i] << ' ';
            left += flag;
        } else {
            for (int i = right; i > right-flag && i >= left; i--)
                cout << arr[i] << ' ';
            right -= flag;
        }
        flag++;
    }
}

int main() {
    int arr[] = {23, 45, 78, 32, 89, 10};
    int n = sizeof(arr)/sizeof(arr[0]);
    printAlternate(arr, n);  // 10 23 89 78 45 32
    return 0;
}

Kết quả

10 23 89 78 45 32