社区讨论

快排由于TLE只有40,可是我写的归并为什么会出WA啊~~

P1177【模板】排序参与者 8已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@lo1xyzgq
此快照首次捕获于
2023/10/23 04:49
2 年前
此快照最后确认于
2023/11/03 05:14
2 年前
查看原帖
C
#include<stdio.h>
#define MAXN 100005 
int a[MAXN];
int b[MAXN];
void merge(int h1,int r1,int h2,int r2){
	int len=r2-h1+1;
	int pb=0,p1=h1,p2=h2;
	while(p1<=r1 && p2<=r2){
		if(a[p1]<a[p2])		b[pb++]=a[p1++];
		else	b[pb++]=a[p2++];
	}
	while(p1<=r1)	b[pb++]=a[p1++];
	while(p2<=r2)	b[pb++]=a[p2++];
	pb=0;
	while(pb<len)	a[h1+pb]=b[pb++];
	return;
}
void msort(int left,int right){
	if(right<=left)		return;
	int mid=(left+right)/2;
	msort(left,mid);
	msort(mid+1,right);
	merge(left,mid,mid+1,right);
	return;
}
void print(int n){
	int i;
	for(i=0;i<n;i++){
		printf("%d",a[i]);
		if(i!=n-1)	printf(" ");
		else	printf("\n");
	}
}
int main()
{
	int n;
	scanf("%d",&n);
	int i;
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	msort(0,n-1);
	print(n);
	return 0;
 } 

回复

7 条回复,欢迎继续交流。

正在加载回复...