Cod sursa(job #1350400)

Utilizator MaarcellKurt Godel Maarcell Data 20 februarie 2015 19:44:45
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;

int N,a[500010];

void swp(int &x, int &y){
    int aux=x;
    x=y;
    y=aux;
}

void qsort(int l, int r){
    if (l>=r) return;
    int i,c=l,ind;
    ind=(l+(rand()%(r-l+1)));

    swp(a[ind],a[r]);

    for (i=l; i<r; i++)
        if (a[i]<=a[r]){
            swp(a[i],a[c]);
            c++;
        }

    swp(a[r],a[c]);
    qsort(l,c-1);
    qsort(c+1,r);
}

int main(){
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    fin >> N;
    srand(time(NULL));
    int i;
    for (i=1; i<=N; i++) fin >> a[i];

    qsort(1,N);
    for (i=1; i<=N; i++) fout << a[i] << " ";
    return 0;
}