Clasa a IX-a · Tablouri unidimensionale (vectori)Read in English
Inversarea unui vector în C++
În engleză: Reversing an array
Ideea
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ă.
Descrierea în engleză
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.
- Complexitate
- O(n)
- Clasa
- Clasa a IX-a (Grade 9)
Exemple
Intrare
5 1 2 3 4 5
Ieșire așteptată
5 4 3 2 1
Codul C++
Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.
/*
* 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;
}
Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.