过了,就是想问一下
查看原帖
过了,就是想问一下
1024366
LCA_楼主2024/6/2 17:10
#include<bits/stdc++.h>
using namespace std;
void merge(int a[],int l,int r){
	if(l>=r){
		return;
	}
	int mid=(l+r)/2;
	merge(a,l,mid);
	merge(a,mid+1,r);
	int i=l,j=mid+1,k=l,b[114514];
	while(i<=mid&&j<=r){
		if(a[i]<a[j]){
			b[k]=a[i];
			k++;i++;
		}
		else{
			b[k]=a[j];
			k++;j++;
		}
	}
	while(i<=mid){
		b[k]=a[i];
		k++;i++;
	}
	while(j<=r){
		b[k]=a[j];
		k++;j++;
	}
	for(int i=l;i<=r;i++){
		a[i]=b[i];
	}
}
int main(){
    int a[114514],n;
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
	}
    merge(a,1,n);
	for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

这代码本地会错,洛谷就过了。

2024/6/2 17:10
加载中...