Cod sursa(job #633773)

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

using namespace std;

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

int n,a[nmax];

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

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

void sortare( int st, int dr)
{
    int pivot,i,j,aux;
    if(st<dr)
    {
    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(i,dr);
    if(j>st)
      sortare(st,j);
    }

}

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