Cod sursa(job #1347136)

Utilizator Edsger.DijkstraEdsger Wybe Dijkstra Edsger.Dijkstra Data 18 februarie 2015 20:12:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>

using namespace std;

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

const int MAXN = 500010;

int V[MAXN];

int Partition (int st, int dr)
{
    int i, j, p;

    i = st - 1;
    j = dr + 1;
    p = V[st + rand () % (dr - st + 1)];

    while (1){
        do{
            i ++;
        } while (V[i] < p);
        do{
            j --;
        } while (V[j] > p);

        if (i < j)
            swap (V[i], V[j]);
        else
            return j;
    }
}

void Quicksort (int st, int dr)
{
    if (st >= dr)
        return;

    int p = Partition (st, dr);

    Quicksort (st, p);
    Quicksort (p + 1, dr);
}

int main()
{
    srand (time (0));

    int N, i;

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

    Quicksort (1, N);

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

    return 0;
}