RE,0分求调
查看原帖
RE,0分求调
1494926
wuchengjun05楼主2024/12/5 12:45

手写归并排序+判定

#include<bits/stdc++.h>
using namespace std;
int s[30],q[30];
int n,i;
bool pd(int x,int y){
    int wx=1,wy=1;
    int i=x,j=y;
    int g,h;
    while(i!=0) wx*=10,i/=10;
    while(j!=0) wy*=10,j/=10;
    int qian=x/wx;
    while(x!=0&&y!=0){
        g=x/wx,h=y/wy;
        wx%=10;wy%=10;
        if(g>h) return 1;
        else if(g<h) return 0;
    }
    if(x!=0)
       if(g>qian)return 1;
       else return 0;
    else
       if(h>qian) return 0;
       else return 1;
}
void gb(int t,int w){
    if(t==w) return ;
    int mid=(t+w)/2;
    gb(t,mid);
    gb(mid+1,w);
    int z1=t,z2=mid+1,z3=t-1;
    while(z1!=mid&&z2!=w){
        if(pd(z1,z2)) z3++,q[z3]=s[z1],z1++;
        else z3++,q[z3]=s[z2],z2++;
    }
    while(z1!=mid) z3++,q[z3]=s[z1],z1++;
    while(z2!=w) z3++,q[z3]=s[z2],z2++;
    for(i=t;i<=w;i++) s[i]=q[i];
    return ;
}

signed main(){
    cin>>n;
    for(i=1;i<=n;i++) cin>>s[i];
    gb(1,n);
    for(i=1;i<=n;i++) cout<<s[i];
}
2024/12/5 12:45
加载中...