归并排序的主要思想是
①先递归:先将一段数据序列分成若干个子序列(二分之一)
②归并:子序列从小到大排列,再合二为一
#include <iostream>
using namespace std;
int a[100010],tmp[100010];
int sort(int l,int r)
{ if(l==r)
return 0;
int mid;
mid=l+r>>1;
sort(l,mid);
sort(mid+1,r);
int i=l,j=mid+1,k=0;
while(i<=mid&&j<=r)
{
if (a[i]<=a[j])
tmp[k++]=a[i++];
else
tmp[k++]=a[j++];
}
while(i<=mid)
tmp[k++]=a[i++];
while(j<=r)
tmp[k++]=a[j++];
for (i = l, j = 0; i <= r; i++, j++) a[i] = tmp[j];
}
int main() {
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(0,n-1);
for(int i=0;i<n;i++)
cout<<a[i];
return 0;
}