Cod sursa(job #330652)

Utilizator AnDrEwBoYA Andrei AnDrEwBoY Data 10 iulie 2009 23:00:57
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<stdio.h>
#include<cstdlib>
int tablou[500000];

void quickSort(int st,int dr) 
{
    int temp,min,max,mijl;
    min = st;
    max = dr;
    mijl = 0;
    for(int i = st; i <= dr; i++)// tablou[(int)(st + (std::rand()%(dr-st)))];
      mijl+=tablou[i];
      mijl = mijl/(dr-st+1);
    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;
}