Cod sursa(job #1234842)

Utilizator somuBanil Ardej somu Data 28 septembrie 2014 10:10:42
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>

#define nmax 500001

using namespace std;

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

int n, i;
int A[nmax];

void qs(int st, int dr)
{
    int dis, i, j;
    
    if (st < dr) {
        
        i = st;
        j = dr;
        dis = 1;
        
        while (i != j)
            if (dis == 1)
                if (A[i] <= A[j])
                    i++;
                else
                {
                    swap(A[i], A[j]);
                    j--;
                    dis = -1;
                }
                else
                    if (A[i] <= A[j])
                        j--;
                    else
                    {
                        swap(A[i], A[j]);
                        i++;
                        dis = 1;
                    }
        
        qs(st, i-1);
        qs(i+1, dr);
        
    }
    
}

void read()
{
    fin >> n;
    
    for (i=1; i<=n; i++)
        fin >> A[n-i+1];
}

void write()
{
    for (i=1; i<=n; i++)
        fout << A[i] << " ";
    
    fout << "\n";
}

int main()
{
    
    read();
    qs(1, n);
    write();
    
    fin.close();
    fout.close();
    
    return 0;
}