Как переставить элементы массива в указанном порядке?

Рейтинг: 0Ответов: 1Опубликовано: 07.02.2023

a1, an+1, a2, an+2, ... , an, a2n

Задан массив целых чисел a размером 2n. Как сделать перестановку в массиве таким образом?

Ответы

▲ 1Принят

Раз устраивает медленный O(N2) способ, то просто поочередно сдвигаем элементы в нужную позицию:

#include <vector>
#include <iostream>
 
using namespace std;
 
int main(int argc, char * argv[])
{
    const int N = 10;
 
    vector<int> a(2*N);
    for(int i = 0; i < 2*N; ++i) a[i] = i+1;
 
    for(int i = 0; i < 2*N; ++i) cout << a[i] << " "; cout << "\n";
 
    for(int i = N; i <= 2*N-2; ++i)
    {
        for(int j = 0, k = i; j < 2*N-i-1; ++j,--k)
        {
            swap(a[k],a[k-1]);
        }
    }
 
    for(int i = 0; i < 2*N; ++i) cout << a[i] << " "; cout << "\n";
}