Cod sursa(job #332119)

Utilizator mika17Mihai Alex Ionescu mika17 Data 16 iulie 2009 17:14:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>

void swap(int &a,int &b) {
    
     int aux = a; a = b; b = aux;
}

void qsort(int *A,int l,int r) {
     
     while(l < r) {
          int p = A[l + rand() % (r - l + 1)], i = l - 1, j = r + 1;
          
          while(i <= j) {
                  do i++; while( i <= r && A[i] < p );   
                  do j--; while( j >= l && A[j] > p );
                  if(i < j) 
                   swap(A[i],A[j]);
          }
          qsort(A,l,j); 
          l = i;
     }
}

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