归并求改!
查看原帖
归并求改!
1477837
Yangzp666楼主2024/10/8 16:40
#include<bits/stdc++.h>
using namespace std;
const int N=100100;
int a[N],n,r[N];

void guibing(int s,int t)
{
	if(s==t) return ;
	int mid=(s+t)/2;
	guibing(s,mid);
	guibing(mid+1,t);
	int i=s,j=mid+1;
	int k=s;
	while(i<=mid&&j<=t)
	{
		if(a[i]<=a[j]) 
		{
			r[k]=a[i];
			i++;
			k++;
		}
		else{
			r[k]=a[j];
			j++;
			k++;
		}
	}
	if(i>mid)
	{
		for(;k<=t;k++)
		{
			r[k]=a[j];
			j++;
		}
	}
	else 
	{
		for(;k<=t;k++)
		{
			r[k]=a[i];
			i++;
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	guibing(1,n);
	for(int i=1;i<=n;i++)
	{
		cout<<r[i]<<' ';
	}
 } 
2024/10/8 16:40
加载中...