Cod sursa(job #1553559)

Utilizator rptomaToma Radu-Petrescu rptoma Data 20 decembrie 2015 01:00:27
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
int a[500000];

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

int partitie(int st, int dr){
    int pindex,i,y;
    y=st+(rand()%(dr-st+1));
    swap(a[y],a[dr]);
    pindex=st;
    for(i=st;i<=dr-1;i++){
        if(a[i]<=a[dr]){
            swap(a[i],a[pindex]);
            pindex++;
        }
    }
    swap(a[dr], a[pindex]);
    return pindex;
}

void quicksort(int st, int dr){
    int index;
    if(st<dr){
        index=partitie(st,dr);
        quicksort(st, index-1);
        quicksort(index+1, dr);
    }
}
int main() {
    int i,n;
    f>>n;
    srand(time(NULL));
    for(i=1;i<=n;i++) f>>a[i];
    quicksort(1, n);
    for(i=1;i<=n;i++) g<<a[i]<<" ";
    return 0;
}