NYOJ233 Sort it
烂题。冒泡可行但违背了原题的意思。
附ac代码:
#include <stdio.h> #include <stdlib.h> int main(){ int n, *a, count, i, j, t; while(scanf("%d", &n) == 1){ i = count = 0; a = (int *)malloc(sizeof(int) * n); while(i < n) scanf("%d", &a[i++]); for(i = 0; i < n - 1; ++i) for(j = i + 1; j < n; ++j) if(a[i] > a[j]){ t = a[i], a[i] = a[j], a[j] = t; ++count; } printf("%d\n", count); free(a); } return 0; }
#include <stdio.h> #include <stdlib.h> int main(){ int n, *a, count, i, j, t; while(scanf("%d", &n) == 1){ i = count = 0; a = (int *)malloc(sizeof(int) * n); while(i != n) scanf("%d", &a[i++]); while(1){ for(i = j = 0; i != n - 1; ++i){ if(a[i] > a[i + 1]){ ++j; t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } if(j == 0) break; count += j; } break; } printf("%d\n", count); free(a); } return 0; }