1 条题解
-
0
C :
#include<stdio.h> int main() { int n,a[1010]; int i,j,t; int count; while(scanf("%d",&n),n) { count=0; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=1;i<n;i++) for(j=1;j<=n-1;j++) if(a[j-1]>a[j]) { t=a[j-1]; a[j-1]=a[j]; a[j]=t; count++; } printf("%d\n",count); } }
C++ :
#include <stdio.h> #include <stdlib.h> int a[1005], t[1005]; long long sum; void Merge(int l, int m, int r) { int p = 0; int i = l, j = m + 1; while (i <= m && j <= r) { if (a[i] > a[j]) { t[p++] = a[j++]; sum += m - i + 1; } else t[p++] = a[i++]; } while (i <= m) t[p++] = a[i++]; while (j <= r) t[p++] = a[j++]; for (i = 0; i < p; i++) a[l + i] = t[i]; } void MergeSort(int l, int r) { int m; if (l < r) { m = (l + r) / 2; MergeSort(l, m); MergeSort(m + 1, r); Merge(l, m, r); } } int main() { int n, i; while (scanf("%d", &n) != EOF, n) { sum = 0; for (i = 0; i < n; i++) scanf("%d", &a[i]); MergeSort(0, n - 1); printf("%lld\n", sum); } return 0; }
Pascal :
var a:array[1..1000]of longint;n,s,i,j:longint; begin readln(n); while n<>0 do begin s:=0; for i:=1 to n do read(a[i]); for i:=1 to n do for j:=1 to n-i do if a[j]>a[j+1] then begin a[j]:=a[j]+a[j+1];a[j+1]:=a[j]-a[j+1];a[j]:=a[j]-a[j+1];s:=s+1 end; writeln(s); readln(n) end end.
- 1
信息
- ID
- 2323
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者