Cod sursa(job #1419840)

Utilizator mariusadamMarius Adam mariusadam Data 16 aprilie 2015 21:06:53
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define nmax 500000

using namespace std;

int v[nmax],n;

int pivot(int (&v)[nmax],int st,int dr) {
    int di=1,dj=0,i=st,j=dr;

    while (i<j) {
        if (v[i]>v[j]) {
            swap(v[i],v[j]);
            swap(di,dj);
        }
        i+=di;
        j-=dj;
    }
}

void quick_sort(int (&v)[nmax],int st,int dr) {

    if (st<dr) {
        int p=pivot(v,st,dr);
        quick_sort(v,st,p-1);
        quick_sort(v,p+1,dr);
    }
}

void readData(int (&v)[nmax],int &n) {

    ifstream r("algsort.in");
    r>>n;
    for (int i=0;i<n;i++)
        r>>v[i];
    r.close();
}

void writeData(int (&v)[nmax],int &n) {

    ofstream w("algsort.out");
    for (int i=0;i<n;i++)
        w<<v[i]<<" ";
    w.close();
}

int main() {
    readData(v,n);
    quick_sort(v,0,n-1);
    writeData(v,n);
}