Cod sursa(job #1052249)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 10 decembrie 2013 23:03:33
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#define Nmax 500100
using namespace std;

int N, V[Nmax];

void QuickSort(int A, int B) {

    int Left, Right, Pivot;

    Left = A;
    Right = B;
    Pivot = V[(Left + Right) >> 1];

    while(Left <= Right) {

        while(V[Left] < Pivot)
            ++Left;

        while(Pivot < V[Right])
            --Right;

        if(Left <= Right) {
            swap(V[Left], V[Right]);
            ++Left; --Right;
            }

        }

    if(A < Right)
        QuickSort(A, Pivot - 1);

    if(Left < B)
        QuickSort(Pivot + 1, B);

}
void Read() {

    ifstream in("algsort.in");
    in >> N;

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

    in.close();

}
void Write() {

    ofstream out("algsort.out");

    for(int i = 1; i <= N; i++)
        out << V[i] << ' ';
    out << '\n';

    out.close();

}
int main() {

    Read();
    QuickSort(1, N);
    Write();

    return 0;

}