Cod sursa(job #2059187)

Utilizator AnduRazvanMindrescu Andu AnduRazvan Data 6 noiembrie 2017 19:12:53
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int n,a[500001];
int Pivot(int s,int d)
{ int p=((s+rand()%(d-s+1))+(s+rand()%(d-s+1))+(s+rand()%(d-s+1)))/3;

    int i=s-1,aux,j;
    aux=a[p];
    a[p]=a[d];
    a[d]=aux;
    for(j=s;j<=d;j++)
     if(a[j]<a[d])
     { i++;
          aux=a[i];
          a[i]=a[j];
          a[j]=aux;
     }
    aux=a[i+1];
    a[i+1]=a[d];
    a[d]=aux;
    return i+1;
}
void QS(int s,int d)
{ if(s<d)
   { int p=Pivot(s,d);
     QS(s,p-1);
     QS(p+1,d);
   }
}
int main()
{ FILE *f,*g;
  f=fopen("algsort.in","r");
  g=fopen("algsort.out","w");
  fscanf(f,"%d",&n);
  int i;
  for(i=1;i<=n;i++)
    fscanf(f,"%d",&a[i]);
    srand(time(0));
    QS(1,n);
    for(i=1;i<=n;i++)
    fprintf(g,"%d ",a[i]);
    return 0;
}