0分求救~~~

P1116 车厢重组

推荐使用冒泡排序 ```cpp #include<iostream> using namespace std; int main(){ int n,a[10010],ans=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ if(a[i]>a[j]){ ans++; } } } cout<<ans; return 0; } ``` [AC记录](https://www.luogu.com.cn/record/94181411)
by xrxtcl @ 2022-11-15 22:53:06


@[Fortnight](/user/279846) 我用的选择排序 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int a[1100],n,b=0,t=0; cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n-1;i++){ for(int k=i+1;k<=n;k++){ if(a[i]>a[k]){ t=a[i]; a[i]=a[k]; a[k]=t; b++; } } } cout<<b; return 0; } ```
by _lzy_ @ 2022-11-15 22:54:30


@[Fortnight](/user/279846) 这是我的归并排序 ```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,a[500005],k[500005],ans; void in(ll &s){ char c = getchar(); while(c < '0' || c > '9') c = getchar(); for(s = 0;c >= '0' && c <= '9';c = getchar()) s = s * 10 + c - '0'; } void msort(ll l,ll r){ if(l == r) return; ll mid = (l+r)>>1; msort(l,mid);msort(mid+1,r); ll zl = l,zr = mid+1,cnt = 0; while(zl <= mid && zr <= r){ if(a[zl] > a[zr]){ ans += mid-zl+1; k[++cnt] = a[zr++]; } else k[++cnt] = a[zl++]; } while(zl <= mid) k[++cnt] = a[zl++]; while(zr <= r) k[++cnt] = a[zr++]; for(ll i = 1;i <= cnt;i++){ a[l+i-1] = k[i]; } } int main(){ in(n); for(ll i = 1;i <= n;i++) in(a[i]); msort(1,n); cout << ans; return 0; } ```
by flying_man @ 2022-11-15 23:13:53


|