Cod sursa(job #771787)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 27 iulie 2012 00:41:16
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int a[500001],n;

void quicksort(int xi, int xf)
{int b[100],r,d,j,yi,yf,eq;
 d=xf-xi+1;
 if(d>1)
 {yi=xi-1;  yf=xf+1;  eq=0;
 r=xi+rand()%d;
// g<<"Length:  "<<d<<"   Random: "<<r<<"  "<<"  xi: "<<xi<<"   xf: "<<xf<<"  ";
 for(j=xi; j<=xf; j++) 
   {if(a[j]<a[r])
      {yi++;  b[yi]=a[j];}
    if(a[j]>a[r])
      {yf--;  b[yf]=a[j];}
    if(a[j]==a[r])  
      eq++;
   }   
  for(j=1; j<=eq; j++) 
     b[yi+eq]=a[r];
 for(j=xi; j<=xf; j++)
      a[j]=b[j];
// for(j=1; j<=n; j++)
//    g<<a[j]<<" ";
// g<<"  yi =  "<<yi<<"   yf = "<<yf<<"  eq = "<<eq<<endl;             
 quicksort(xi,yi);
 quicksort(yi+eq+1, xf); }                   
}

int main()
{int i;
f>>n;
for(i=1; i<=n; i++)
   f>>a[i];
quicksort(1,n);   
for(i=1; i<=n; i++)   
g<<a[i]<<" ";   
  
return 0;}