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 an / 2 + 1
-a valoare din șir (dacă elementele ar fi crescătoare); - Pentru
n
par (n % 2 == 0
), mediana esten / 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