⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1004.cpp

📁 这是在acm上所做的1003-1004
💻 CPP
字号:
#include <stdio.h>

#define    MAX 1000000000
#define    N   10000000
unsigned int  L[N],R[N],A[N];

void Merge(unsigned int a[],unsigned int p, unsigned int q,unsigned int r){
//将已排好序的a[p...q]和a[q+1...r]合并

    unsigned int n1,n2,i,j,k;

	n1=q-p+1;
	n2=r-q;
	for(i=1;i<=n1;i++)
		L[i]=a[p+i-1];
	for(j=1;j<=n2;j++)
		R[j]=a[q+j];

	L[n1+1]=MAX;
	R[n2+1]=MAX;

	i=1;j=1;
	for(k=p;k<=r;k++)
		if(L[i]<R[j])
			a[k]=L[i++];
		else
			a[k]=R[j++];

}

void MergeSort(unsigned int a[],unsigned int p,unsigned int r){
//合并排序

	unsigned int q;
	if(p<r){
		q=(p+r)/2;
		MergeSort(a,p,q);
		MergeSort(a,q+1,r);
		Merge(a,p,q,r);

	}

}

int  main(){

	unsigned int i;
	unsigned int n;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&A[i]);

	MergeSort(A,1,n);
	for(i=1;i<=n;i++)
		printf("%d ",A[i]);
	putchar('\n');
	return 0;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -