Grade 9 · One-dimensional arrays (vectors)Citește în română

Reversing an array

Original: Inversarea unui vector

O(n)C++1743 lines1 example

The idea

We swap the first element with the last, the second with the second to last, and so on: v[i] with v[n - i + 1]. We stop halfway (i <= n / 2); if we went up to n, every pair would be swapped twice and the array would return to its original order.

Original description (Romanian)

Interschimbăm primul element cu ultimul, al doilea cu penultimul și așa mai departe: v[i] cu v[n - i + 1]. Ne oprim la jumătate (i <= n / 2); dacă am merge până la n, fiecare pereche s-ar interschimba de două ori și vectorul ar reveni la forma inițială.

Complexity
O(n)
Grade
Grade 9 (Clasa a IX-a)

Examples

Example 1

Input

5
1 2 3 4 5

Expected output

5 4 3 2 1

The code

Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.

inversarea-vectorului.cpp
/*
 * Titlu: Inversarea unui vector
 * Clasa: 9
 * Capitol: Tablouri unidimensionale (vectori)
 * Descriere: Interschimbăm primul element cu ultimul, al doilea cu penultimul
 *            și așa mai departe: v[i] cu v[n - i + 1]. Ne oprim la jumătate
 *            (i <= n / 2); dacă am merge până la n, fiecare pereche s-ar
 *            interschimba de două ori și vectorul ar reveni la forma inițială.
 * Complexitate: O(n)
 *
 * Exemplu
 * Intrare:
 * 5
 * 1 2 3 4 5
 * Ieșire: 5 4 3 2 1
 */
#include <iostream>
using namespace std;

int v[1001];

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> v[i];
    }
    for (int i = 1; i <= n / 2; i++)
    {
        int aux = v[i];
        v[i] = v[n - i + 1];
        v[n - i + 1] = aux;
    }
    for (int i = 1; i <= n; i++)
    {
        cout << v[i] << ' ';
    }
    cout << '\n';
    return 0;
}

Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.