應該insertion sort最快吧?
所以就用insertion sort了
/* ACM 10107 What is the Median? * mythnc * 2011/11/04 19:16:36 * run time: 0.040 */ #include <stdio.h> #define MAXN 10000 void sort(int *, int); int median(int *, int); int main(void) { int n, count; int seq[MAXN]; count = 0; while (scanf("%d", &n) == 1) { seq[count++] = n; if (count > 1) sort(seq, count); printf("%d\n", median(seq, count)); } return 0; } /* sort: insertion sort array s */ void sort(int *s, int n) { int i, tmp; tmp = s[n - 1]; for (i = n - 2; i > -1; i--) if (s[i] > tmp) { s[i + 1] = s[i]; if (i == 0) s[0] = tmp; } else { s[i + 1] = tmp; break; } } /* median: return the median number */ int median(int *s, int n) { int k; k = n / 2; if (n % 2 == 1) return s[k]; else return (s[k] + s[k - 1]) / 2; }
沒有留言:
張貼留言