代码实现如下
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int b[101];
void merge_sort(int *a,int l,int r)//归并排序
{
if(l==r) return ;
int mid=(l+r)>>1;
merge_sort(a,l,mid);
merge_sort(a,mid+1,r);
int i=1,j=mid+1;
for(int k=1;k<=r;k++)
{
if(j>r||(i<=mid&&a[i]<a[j]))
{
b[k]=a[i];
i++;
}
else
{
b[k]=a[j];
j++;
}
}
for(int k=l;k<=r;k++)
a[k]=b[k];
}
void quick_sort(int *a,int l,int r)//快速排序
{
//swap(a[l],a[rand()*rand%(r-l+1)+1]);
int tmp=a[l];
int l_=l,r_=r;
while(l<r)
{
while(l<r)
{
if(a[r]>tmp) r--;
else
{
a[l]=a[r];
l++;
break;
}
}
while(l<r)
{
if(a[l]<tmp) l++;
else
{
a[r]=a[l];
r--;
break;
}
}
}
a[l]=tmp;
if(l-l_>1) quick_sort(a,l_,l-1);
if(r_-r>1) quick_sort(a,r+1,r_);
}
int main()
{
int n;
int a[1010];
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
//quick_sort(a,1,n);
merge_sort(a,1,n);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}