AC(蒟蒻写法)

老谭134  •  2年前


include

using namespace std;

void laotan(int left[],int right[],int begin,int end){

if(begin>=end)return;
int mid=(begin+end)/2;
int begin1=begin,end1=mid;
int begin2=mid+1,end2=end;
laotan(left,right,begin1,end1);
laotan(left,right,begin2,end2);
int k=begin;
while(begin1<=end1&&begin2<=end2)
right[k++]=left[begin1]<left[begin2]?left[begin1++]:left[begin2++];
while(begin1<=end1)right[k++]=left[begin1++];
while(begin2<=end2)right[k++]=left[begin2++];
for(k=begin;k<=end;k++)left[k]=right[k];

}

int n,a[10005],b[10005]; int main(void){

cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
laotan(a,b,1,n);
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;

}


评论:

include

using namespace std;

void laotan(int left[],int right[],int begin,int end){

if(begin>=end)return;
int mid=(begin+end)/2;
int begin1=begin,end1=mid;
int begin2=mid+1,end2=end;
laotan(left,right,begin1,end1);
laotan(left,right,begin2,end2);
int k=begin;
while(begin1<=end1&&begin2<=end2)
right[k++]=left[begin1]<left[begin2]?left[begin1++]:left[begin2++];
while(begin1<=end1)right[k++]=left[begin1++];
while(begin2<=end2)right[k++]=left[begin2++];
for(k=begin;k<=end;k++)left[k]=right[k];

}

int n,a[10005],b[10005]; int main(void){

cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
laotan(a,b,1,n);
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;

}


老谭134  •  2年前

请先登录,才能进行评论