排列习题

排列习题_第1张图片
#include 
void quicksort(int *a,int left,int right){
  int temp,j,i,t;
  if(left > right) return;
  
  temp=a[left];
  i = left;
  j = right;
  while(i != j){
  	while(a[j] >= temp && i < j) j--;
  	while(a[i] <= temp && i < j) i++;
  	if(i < j){
  		t = a[i];
  		a[i] = a[j];
  		a[j] = t; 
  	}
  }
  a[left] = a[i];
  a[i] = temp; 
  quicksort(a,left,i-1);
  quicksort(a,i+1,right);
  return;	
} 
int main(){
	int i,n,a[1001],k=0,m,b[1001];
   scanf("%d",&n);
	for(i = 1;i <= n; i++){
	 scanf("%d",&a[i]);	
	} 
	for(i = 0;i < n; i++){
	  for(m = 0;m < k+1; m++){
	  	if(a[i] == b[m]){
	  		i++;
	  		break;
	  	}
	  }
	  b[k++] = a[i];	
	}
	//去重

	quicksort(a,1,n);
	
	for(i = 1;i <= n; i++){
	  printf("%d ",a[i]);	
	} 
	return 0;
}  

你可能感兴趣的:(C语言,算法系列)