一个奇怪的问题
查看原帖
一个奇怪的问题
1024529
sszxyyds楼主2023/11/19 20:04

这道题用正常的快排,AC代码中有

if(l>r){
		return ;
	}
	int mid=(l+r)>>1;
	int i=l;
	int j=r;
	while(i<=j){
		while(a[i]<a[mid]){
			i++;
		}
		while(a[j]>a[mid]){
			j--;
		}
		if(i<=j){
			swap(&a[i],&a[j]);
			i++;
			j--;
		}
	}
	qsort(l,j);
	qsort(i,r);

但是如果改成

int mid=(l+r)>>1;
	int i=l;
	int j=r;
	while(i<=j){
		while(a[i]<a[mid]){
			i++;
		}
		while(a[j]>a[mid]){
			j--;
		}
		if(i<=j){
			swap(&a[i],&a[j]);
			i++;
			j--;
		}
	}

只有40分,我觉得两个都差不多。 但是为什么会Wa呢

2023/11/19 20:04
加载中...