Cod sursa(job #590755)

Utilizator AnaGeorgescuAna-Maria Catalina Georgescu AnaGeorgescu Data 19 mai 2011 20:45:03
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

void quick(int,int);
int divide(int,int); 

int a[500000];

int divide(int p, int q)
{   int st=p,dr=q,x=a[p];

    while(st<dr)
   {    while(st<dr && a[dr]>=x) dr--;
              a[st]=a[dr];

        while(st<dr && a[st]<=x) st++;
              a[dr]=a[st];
   }
a[st]=x;
return st;
}

void quick(int p, int q)
{
int m;
m=divide(p,q);

if(m-1>p) quick(p,m-1);

if(m+1<q) quick(m+1,q);
}

int main()
{
int i,n;
fin>>n;
for(i=1;i<=n;i++)
	fin>>a[i];
quick(1,n);

for(i=1;i<=n;i++) 
	fout<<a[i]<<" ";

return 0;
}