#C09L02P02. C09.L02.归并排序.归并排序的代码实现

C09.L02.归并排序.归并排序的代码实现

归并排序

输入 nnn105n \le 10^5 ),再输入 nnintint 范围内的整数,请把这 nn 个数排序后输出。

#include<bits/stdc++.h>
using namespace std;
int n;
int a[100010],b[100010];
long long ans;
void msort(int L,int R)
{
    if(L==R)return ;
    int mid=(L+R)/2;
    msort(L, __填空(1)__);
    msort( __填空(2)__ ,R);
    int i=L,j=mid+1,k=0;
    while(i<=mid && j<=R)
	{
		k++;
        if(a[i]<=a[j])
		{
			b[k]=a[i];
			i++;
		}
		else 
		{
			b[k]=a[j];
			j++;
		}
    }
    for(int p=i;p<=mid;p++)
	{
		k++;
		b[k]=a[p];
	}
    for(int p=j;p<=R;p++)
	{
		k++;
		b[k]=a[p];
	}

    for(int p=1;p<=k;p++)
		a[L+p-1]=b[p];
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    msort(1,n);
    cout<<ans;
    return 0;
}

填空(1):{{ input(1) }}

填空(2):{{ input(2) }}