Cod sursa(job #796106)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 10 octombrie 2012 17:52:01
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>

#define Nmax 100

#define swap(a,b) a^=b^=a^=b

int A[Nmax], N;

int partition(int A[], int left, int right) {
	int pivot = A[(left+right)/2];
	int i, j;
	i = left - 1;
	j = right + 1;
	do {
		do {
			i++;
		} while(A[i]<pivot);
		do {
			j--;
		} while(A[j]>pivot);
		if(i<j)
			swap(A[i],A[j]);
		else
			return j;
	} while(i<j);
}


void quicksort(int A[], int left, int right) {
	
	if(left < right) {
		int poz_pivot = partition(A,left,right);
		quicksort(A,left,poz_pivot);
		quicksort(A,poz_pivot+1,right);
	}
}
	
	
	

int main() {
	
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	
	int i;
	
	scanf("%d",&N);
	for(i=1; i<=N; i++)
		scanf("%d",&A[i]);
	
	quicksort(A,1,N);
	
	for(i=1; i<=N; i++)
		printf("%d ",A[i]);
	
	return 0;
}