Cod sursa(job #628391)

Utilizator PopaStefanPopa Stefan PopaStefan Data 1 noiembrie 2011 11:48:22
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#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,j,pivot=a[st];
i=st;j=dr;
while(i<j)
  {while(i<j && 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 pivot=poz_pivot(st,dr);
if(st<pivot-1) qsort(st,pivot-1);
if(dr>pivot+1) qsort(pivot+1,dr);
}

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