Cod sursa(job #444827)

Utilizator PopaStefanPopa Stefan PopaStefan Data 21 aprilie 2010 19:58:19
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
//Sa se sorteze crescator un sir cu algoritmul quicksort
#include<fstream>
#define nmax 500001

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[nmax],n;

void citire()
{fin>>n;
for(int i=1;i<=n;i++)
  fin>>a[i];
}

void afisare()
{for(int i=1;i<=n;i++)
  fout<<a[i]<<" ";
}

int poz_pivot(int st,int dr)
{int i=st,j=dr,pivot=a[st];
while(i<j)
  {while(j>i && a[j]>=pivot)
     j--;
   a[i]=a[j];
   while(i<j && a[i]<=pivot)
     i++;
   a[j]=a[i];
  }
a[i]=pivot;
return i;
}

void qsort(int st,int dr)
{int p=poz_pivot(st,dr);
if(st<p-1) qsort(st,p-1);
if(p+1<dr) qsort(p+1,dr);
}

int main()
{citire();
qsort(1,n);
afisare();
fin.close();
fout.close();
return 0;
}