Cod sursa(job #1029336)

Utilizator handz.FMI Andrei Tanasescu handz. Data 15 noiembrie 2013 13:10:15
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
using namespace std;

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

#define maxN 500001
int n,v[maxN];

int divide(int p,int q)
{
    int st=p,dr=q,x=v[p];
    while(st<dr)
    {
        while(st<dr && v[dr]>=x) dr--;
        v[st]=v[dr];
        while(st<dr && v[st]<=x) st++;
        v[dr]=v[st];
    }
    v[st]=x;
    return st;
}

void QuickSort(int p,int q)
{
    int m=divide(p,q);
    if(m-1>p) QuickSort(p,m-1);
    if(m+1<q) QuickSort(m+1,q);
}

int main()
{
    int i; f>>n;

    for(i=0; i<n ;i++)
        f>>v[i];

    QuickSort(0,n-1);

    for(i=0; i<n ;i++)
        g<<v[i]<<" ";

    return 0;
}