int median(int v[], int n) {
int i, j, min, tmp, med, *sorted;
sorted = (int *)malloc(n*sizeof(int));
assert(sorted != NULL);
for (i = 0; i < n; i++) { sorted[i] = v[i]; }
for (i = 0; i < n; i++) { // a simple sorting algorithm
min = i;
for (j = i+1; j < n; j++) {
if (sorted[j] < sorted[min]) { min = j; }
}
tmp = sorted[i];
sorted[i] = sorted[min];
sorted[min] = tmp;
}
med = sorted[n/2];
free(sorted);
return med; // would return sorted[n/2]; work?
}
|