|- - -|
|

Sastaviti program koji nalazi medianu unesenog niza (mediana je srednji element u sortiranom nizu).
rešenje (.c)

#include <stdio.h>
#define MAXDUZ 100
int polovina;
int mediana(int s[], int levi, int desni);
main()
{
int s[MAXDUZ], n, i, sredina;
extern int polovina;
printf("Unesite duzinu niza:\n");
scanf("%d", &n);
polovina = (n-1)/2;
printf("Unesite niz:\n");
for(i=0; i<n; i++)
scanf("%d", &s[i]);
sredina = mediana(s, 0, n-1);
printf("Mediana niza iznosi: ");
printf("%d\n", sredina);
return 0;
}
int mediana(int s[], int levi, int desni)
{
int i, t, srednji;
extern int polovina;
srednji = levi;
for (i = levi+1; i <= desni; i++)
if (s[i] < s[levi])
{
srednji++;
t = s[srednji];
s[srednji] = s[i];
s[i] = t;
}
t = s[srednji];
s[srednji] = s[levi];
s[levi] = t;
if (srednji == polovina)
return s[srednji];
else if (srednji < polovina)
return mediana(s, srednji+1, desni);
else
return mediana(s, levi, srednji-1);
}

Primeri:

Za učitani niz:
66 88 5 36 2
ispisuje se:
Mediana niza iznosi: 36

Za učitani niz:
21 3 77 45
ispisuje se:
Mediana niza iznosi: 21

|
|= - =|
|_ - _|