老谭134 • 2年前
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;
}
评论:
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;
}
请先登录,才能进行评论