Cod sursa(job #1275082)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 24 noiembrie 2014 19:06:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
const int MAXN=500001;
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[MAXN];
void sortare(int left,int right)
{
    if (left >= right) {
        return ;
    }
    int mij=(left+right)/2;
    int pivot=v[mij];

    int p1 = left, p2 = right;

    while(p1 <= p2) {
        while (v[p1] < pivot) {
            p1++;
        }
        while(v[p2] > pivot) {
            p2--;
        }
        if (p1 <= p2) {
            swap(v[p1], v[p2]);
            p1++;
            p2--;
        }
    }

    if (p1 < right)
        sortare(p1, right);
    if (left < p2)
        sortare(left, p2);

}
int main()
{
    int n;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];

    sortare(1, n);
    for (int i = 1; i <= n; ++i) {
        out << v[i] << " " ;
    }
    return 0;
}