資料量很小,bubble比merge還快。
cocktail跟bubble一樣快。
/* ACM 299 * mythnc * 2011/10/26 09:20:42 * run time: 0.004 */ #include <stdio.h> #define MAXARY 50 #define SWAP(x, y, t) (t = x, x = y, y = t) int bubble1(int *, int, int); int bubble2(int *, int, int); int main(void) { int n, i, count; int ary[MAXARY]; scanf("%*d"); while (scanf("%d", &n) == 1) { if (n == 0) { printf("Optimal train swapping takes 0 swaps.\n"); continue; } for (i = 0; i < n; i++) scanf("%d", &ary[i]); for (count = i = 0; i < n - 1; i++) if (i % 2 == 0) count += bubble1(ary, i / 2, n - (i / 2 + 1)); else count += bubble2(ary, (n - 2) - i / 2, i / 2); printf("Optimal train swapping takes %d swaps.\n", count); } return 0; } /* bubble1: sort ary from 0 to n */ int bubble1(int *ary, int i, int n) { int c, tmp; for (c = 0; i < n; i++) if (ary[i] > ary[i + 1]) { SWAP(ary[i], ary[i + 1], tmp); c++; } return c; } /* bubble2: sort ary from 0 to n */ int bubble2(int *ary, int i, int n) { int c, tmp; for (c = 0; i > n; i--) if (ary[i] < ary[i - 1]) { SWAP(ary[i], ary[i - 1], tmp); c++; } return c; }
沒有留言:
張貼留言