Cod sursa(job #330604)

Utilizator AnDrEwBoYA Andrei AnDrEwBoY Data 10 iulie 2009 17:55:59
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<stdio.h>
#include<cstdlib>
#include<time.h>

int tablou[500000];

void quickSort(int st,int dr) 
{
    int temp,min,max,mijl;
    min = st;
    max = dr;
    mijl = (st + dr) / 2;
    temp = rand() % (dr - st + 1) + st;
    tablou[mijl] ^= tablou[temp] ^= tablou[mijl] ^= tablou[temp];    
    do
    {
         while(tablou[min] < mijl) min++;
         while(tablou[max] > mijl) max--;
         if(min <= max)
         {
            temp = tablou[min];
            tablou[min++] = tablou[max];
            tablou[max--] = temp;                
         }
    }while(min <= max);
    if(st < max)
      quickSort(st,max);
    if(min < dr)
      quickSort(min,dr);
}

int main(void)
{
    int n;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for(int i = 0; i < n; i++)
     scanf("%d",&tablou[i]);  
    quickSort(0,n-1);
    for(int i = 0; i < n; i++)
      printf("%d ",tablou[i]);  
    fclose(stdin); fclose(stdout);
    return 0;
}