Cod sursa(job #1164569)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 2 aprilie 2014 10:04:07
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 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 = A[dr];
    int i = st - 1, j;

    for (j = st; j < dr; j ++)
        if (A[j] <= x){
            i ++;
            swap (A[i], A[j]);
        }

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

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;
}