求助!快排还是超时
查看原帖
求助!快排还是超时
1054194
liao19820563716楼主2024/1/6 14:37
#include <stdio.h>

long long a[100001];

void kuaipai(long long *a,int left,int right){
	long long mid;
	int max,key;
	
	max=right;
	
	key=left;
	
	while(right!=left){
		while(right>left&&a[right]>=a[key]){
			right--;
		}
		
		while(left<right&&a[left]<=a[key]){
			left++;
		}
		
		if(left!=right){
			mid=a[right];
			
			a[right]=a[left];
			
			a[left]=mid;
		}
	}
	
	mid=a[key];
	
	a[key]=a[left];

	a[left]=mid;
	
	if(left>0){
		kuaipai(a,0,left-1);
	}
	
	if(right<max){
		kuaipai(a,right+1,max);
	}
}

int main()
{
	int numb,count;
	
	scanf("%d",&numb);
	
	for(count=0;count<numb;count++){
		scanf("%lld",&a[count]);
	}

	kuaipai(a,0,numb-1);
	
	for(count=0;count<numb;count++){
		printf("%lld ",a[count]);
	}
	
	return 0;
}
2024/1/6 14:37
加载中...