一个二分水题 借用了一下百度的图片 代码如下
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;
}