Grade 9 · One-dimensional arrays (vectors)Citește în română
Reversing an array
Original: Inversarea unui vector
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
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.
/*
* 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.