Fare il debugging è doppiamente difficile rispetto a scrivere direttamente il codice. Quindi, se scrivi il codice nel miglior modo possibile, sei, per definizione, non abbastanza intelligente per fare il debug.
Brian Wilson Kernighan

Esercizi Pascal/C vari

fonte1 calcolo mediana con ordinamento
int mediana(int array[], int n) {	/ n elementi, da 0 a n-1
	qsort(array, n);
	if (n%2!=0)	//se valore dispari
		return array[(n-1)/2];
	else	 	//se valore pari
		return (array[n/2]+array[n/2-1])/2;
}
calcolo mediana in tempo lineare (senza ordinamento)
void partition(Item a[], int l, int r) {
	int i = l-1, j = r;
	Item v = a[r];
	for (;;) {
		while (less(a[++i], v)) ;
		while (less(v, a[--j])) if (j==1) break;
		if (i>=j) break;
		exch(a[i], a[j]);
	}
	exch(a[i], a[r]);
	return i;
}
void select(Item a[], int l, int r, int k) {	// ricorsivo
	if (r>l) {
		int i = partition(a, l, r);
		if (i>k) select(a, l, i-1, k);
		if (i<k) select(a, i+1, r, k);
	}
}
void select(Item a[], int l, int r, int k) {	// iterativo
	while (r>l) {
		int i = partition(a, l, r);
		if (i>=k) r = i-1;
		if (i<=k) l = i+1;
	}
}