Cod sursa(job #1164581)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 2 aprilie 2014 10:16:47
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 500001;

int A[MAXN];

inline void swap (int &A, int &B)
{
    int t = A;
    A = B;
    B = t;
}

int partition (int st, int dr)
{
    int x;
    int i = st - 1, j = dr;

    swap (A[(st + dr) / 2], A[dr]);
    x = A[dr];

    while (i < j){
        while (i < j && A[++ i] < x);
        while (i < j && A[-- j] > x);

        swap (A[i], A[j]);
    }

    swap (A[i], A[dr]);
    return i;
}

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

int main()
{
    int N, i;

    in >> N;
    for (i = 1; i <= N; i ++)
        in >> A[i];

    quicksort (1, N);

    for (i = 1; i <= N; i ++)
        out << A[i] << " ";

    in.close ();
    out.close ();

    return 0;
}