Cod sursa(job #633770)

Utilizator PopaStefanPopa Stefan PopaStefan Data 14 noiembrie 2011 19:24:09
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#define nmax 500001

using namespace std;

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

unsigned int n,a[nmax];

void citire()
{
    fin>>n;
    unsigned int i;
    for(i=0;i<n;i++)
        fin>>a[i];
    fin.close();
}

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

void sortare(unsigned int st,unsigned int dr)
{
    unsigned int pivot,i,j,aux;
    pivot=(st+dr)/2;
    i=st;j=dr;
    while(i<j)
    {
        while(a[i]<a[pivot]) i++;
        while(a[j]>a[pivot]) j--;
        if(i<=j)
        {
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            i++;
            j--;
        }
    }
    if(i<dr)
      sortare(st,i);
    if(j>st)
      sortare(j,dr);

}

int main()
{
    citire();
    if(n>=1)
        sortare(0,n-1);
    afisare();
    fin.close();
    fout.close();
    return 0;
}