归并排序模板

归并排序模板

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int a[1000],n;
int b[1000];
void merge(int l,int mid,int r){
	int p = l , q = mid + 1;
	for(int i=l;i<=r;i++){
		if((q>r)||(p<=mid &&a[p]<=a[q])){
			b[i] = a[p];
			p++;
		}
		else b[i]=a[q++];
	}
	for(int i=l;i<=r;i++){
		a[i]=b[i];
	}
	
}
void merge_sort(int l,int r){
	if(l==r)return ;
	int mid = (l+r)/2;
	merge_sort(l,mid);
	merge_sort(mid+1,r);
	merge(l,mid,r);
}

int main(){
	IOS;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	merge_sort(1,n);
	for(int i=1;i<=n;i++){
		printf("%d",a[i]);
	}	
	return 0;
} 
全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务