Как переставить элементы массива в указанном порядке?
a1, an+1, a2, an+2, ... , an, a2n
Задан массив целых чисел a размером 2n. Как сделать перестановку в массиве таким образом?
Источник: Stack Overflow на русском
a1, an+1, a2, an+2, ... , an, a2n
Задан массив целых чисел a размером 2n. Как сделать перестановку в массиве таким образом?
Раз устраивает медленный 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";
}