Mediana unui șir de valori în C++

Dându-se n valori naturale, să se afle mediana acestora — valoarea aflată la mijlocului șirului. Vom considera că elementele sunt indexate de la 1.

  • Pentru n impar (n % 2 == 1), mediana este a n / 2 + 1-a valoare din șir (dacă elementele ar fi crescătoare);
  • Pentru n par (n % 2 == 0), mediana este n / 2-a valoare din șir (dacă elementele ar fi crescătoare).

Exemplu: Pentru n = 5 și a = [5, 2, 4, 1, 3], mediana este 3: șirul a ordonat crescător este [1, 2, 3, 4, 5], iar elementul de pe poziția n / 2 + 1 = 5 / 2 + 1 = 2 + 1 = 3 este 3.

Explicarea algoritmului

Vom ordona șirul a crescător. Pentru asta, putem ori să folosim funcția sort() din biblioteca <algorithm>, ori să sortăm folosind un algoritm de sortare cunoscut.

De aici, verificăm paritatea lui n. Dacă este impar, afișăm a[n / 2 + 1], altfel, afișăm a[n / 2]. Atenție: considerăm că șirul a are elementele indexate de la 1.

Rezolvare în C++

#include <iostream>

using namespace std;

int main()
{
    //Declarare și citire
    int n, a[1001];
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    //Sortare crescătoare
    for(int i = 1; i <= n; i++) {
        for(int j = i + 1; j <= n; j++) {
            if(a[i] > a[j]) {
                int aux = a[i];
                a[i] = a[j];
                a[j] = aux;
            }
        }
    }

    //Afișarea medianei
    int mediana;
    if(n % 2 == 1) {
        mediana = a[n / 2 + 1];
    } else {
        mediana = a[n / 2];
    }
    cout << "Mediana șirului a este " << mediana;
    return 0;
}

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