3 5一直wrong answer,求助大佬
查看原帖
3 5一直wrong answer,求助大佬
801787
HDU_22041337楼主2022/11/6 17:17
#include<stdio.h>
void Quick_Sort(int *arr, int begin, int end){
	if(begin >=end){
		return;
	}
	int B[60];
	int C[60];
	int a,b,c,d,t;
	a=b=c=d=0;
	int tmp = arr[begin];
	int i = begin;
	int j = end;
	while(i != j){
		while(arr[j] >= tmp && j > i){
			if(arr[j]==tmp){
				a++;
			B[a]=j;
		}
			j--;
		}
		while(arr[i] <= tmp && j > i){
		if(arr[i]==tmp){
				b++;
			C[b]=i;
		}
			i++;
		}
		if(j > i){
		     t = arr[i];
			arr[i] = arr[j];
			arr[j] = t;
		}
	}
	if(a!=0){
	for(c=a;c>0;c--){
		t=arr[B[c]];
		arr[B[c]]=arr[i+a-c+1];
		arr[i+a-c+1]=t;
	}
	}
	if(b!=0){
	for(d=b;d>0;d--){
		t=arr[C[d]];
		arr[C[d]]=arr[i-b+d];
		arr[i-b+d]=t;
	}
	}
	Quick_Sort(arr, begin, i-b);
	Quick_Sort(arr, i+1+a, end);
}
int main(){
	int n,m,i,c=0;
	scanf("%d%d",&n,&m);
	int A[m];
	for(i=0;i<m;i++){
	scanf("%d",&A[i]);
	}
		Quick_Sort(A,c,m-1);
	printf("%d",A[0]);
	for(i=1;i<m;i++){
		printf(" %d",A[i]);
	}
	return 0;
}
2022/11/6 17:17
加载中...