归并排序
作者:
amagi
,
2023-04-07 20:50:50
,
所有人可见
,
阅读 146
#include<stdio.h>
void ww(int x[100000],int left,int right)
{
if(left>=right)return;
int w=(left+right)>>1;
int m=left,n=w+1,c=0;
int gg[100000],cc;
ww(x,left,w);
ww(x,w+1,right);
while(m<=w&&n<=right)
{
if(x[m]<x[n]) gg[c++]=x[m++];
else gg[c++]=x[n++];
}
while(m<=w) gg[c++]=x[m++];
while(n<=right) gg[c++]=x[n++];
for(cc=left,c=0;cc<=right;cc++,c++)
x[cc]=gg[c];
}
int main()
{
int a,b,x[100000];
scanf("%d",&a);
for(b=0;b<a;b++)
scanf("%d",&x[b]);
ww(x,0,a-1);
for(b=0;b<a;b++)
printf("%d ",x[b]);
return 0;
}