Inversarea unui vector în C++

Dându-se un șir de n numere naturale, să se inverseze elementele sale (să se oglindească șirul).

Exemplu: Pentru șirul a = (1, 2, 6, 19, 4) cu lungimea n = 5, se afișează inversul 4, 19, 6, 2, 1.

Cum se inversează un vector în C++

Să zicem că șirul nostru are lungimea n. Atunci, pentru a inversa vectorul, trebuie ca:

  • elementele a[1] și a[n] să se interschimbe;
  • elementele a[2] și a[n - 1] să se interschimbe;
  • elementele a[3] și a[n - 2] să se interschimbe;

Algoritmul de inversare a unui tablou unidimensional

Vom proceda astfel: ne creăm doi indici, i și j, inițial egali cu 1, respectiv cu n. La fiecare pas, interschimbăm elementele a[i] și a[j], incrementăm i (i++) și decrementăm j (j--). Astfel, valorile lui i și j vor fi exact cele de mai sus (1, n; 2, n - 1; 3, n - 2; …). Ne oprim atunci când i ≥ j, adică la jumătatea șirului (ca să nu interschimbăm de două ori elementele).

Implementarea C++ este următoarea:

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim vectorul
    int n, a[101];
    cin >> n; //n = lungimea vectorului a
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    int i = 1, j = n;
    while(i <= j) {
        //Interschimbăm a[i] și a[j]
        int aux = a[i];
        a[i] = a[j];
        a[j] = aux;

        //Trecem la următoarele elemente: a[i + 1] și a[j - 1]
        i++;
        j--;
    }
    return 0;
}

Alte resurse sau bibliografie

DS

Autorul acestei lecții

Dominic Satnoianu

Această lecție a fost redactată de către Dominic Satnoianu.

© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.

Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.

Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.

Comentarii 0

Autentifică-te pentru a putea comenta.

Autentifică-te