Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
46050 WZH 排序 C++ 解答错误 0 MS 264 KB 890 2024-04-23 20:32:28

Tests(0/1):


#include<bits/stdc++.h> using namespace std; int a[100010]={}; int b[100010]={},c[100010]={},d[100010]={}; void fsort(int l,int r) { if(l==r||a[l]==a[r])return; int m=(l+r+1)/2; b[100010]={}; c[100010]={}; d[100010]={}; int bi=0,ci=0,di=0; for(int i=l;i<=r;i++) { if(a[i]<a[m]) { bi++; b[bi]=a[i]; }else if(a[i]==a[m]) { ci++; c[ci]=a[i]; }else if(a[i]>a[m]) { di++; d[di]=a[i]; } } for(int i=l;i<=l+bi-1;i++) { a[i]=b[i-l+1]; } for(int i=l+bi;i<=l+bi+ci-1;i++) { a[i]=c[i-l-bi+1]; } for(int i=l+bi+ci;i<=r;i++) { a[i]=d[i-l-bi-ci+1]; } if(bi==0&&di==0)return ; fsort(l,l+bi-1); fsort(l+ci+bi,r); } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); } fsort(1,n); for(int i=1;i<=n;i++) { printf("%lld ",a[i]); } return 0; }


测评信息: