一個二分水題
借用了一下百度的圖片
代碼如下
int n,f[100010],g[100010];
void sort(int l,int r)
{
if(l==r)
rt;
int mid=(l+r)>>1;
sort(l,mid);
sort(mid+1,r);
int t1=l,t2=mid+1,t3=l;
fr(i,l,r)
f[i]=g[i];
while(t1<=mid||t2<=r)
if(t1>mid||f[t1]>f[t2]&&t2<=r)
{
g[t3]=f[t2];
t3++;
t2++;
}
else
{
g[t3]=f[t1];
t1++;
t3++;
}
}
int main(){
n=read();
fr(i,1,n)
g[i]=read();
sort(1,n);
fr(i,1,n)
printf("%d%c",g[i],i==n?'\n':' ');
rt 0;
}