Cod sursa(job #1160380)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 30 martie 2014 15:19:36
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 500000
int v[MAXN];
inline int pivot(int st, int dr){
    int i, j, aux;
    i=st+(rand()%(dr-st+1));
    aux=v[i];
    v[i]=v[dr];
    v[dr]=aux;
    for(i=j=st; i<dr; i++){
        if(v[i]<v[dr]){
            aux=v[i];
            v[i]=v[j];
            v[j]=aux;
            j++;
        }
    }
    aux=v[dr];
    v[dr]=v[j];
    v[j]=aux;
    return j;
}
void quickSort(int st, int dr){
    int p;
    if(st>=dr){
        return ;
    }
    p=pivot(st, dr);
    quickSort(st, p-1);
    quickSort(p+1, dr);
}
int main(){
    int n, i;
    FILE *fin,*fout;
    fin=fopen("algsort.in","r");
    fout=fopen("algsort.out","w");
    fscanf(fin, "%d", &n);
    for(i=0; i<n; i++){
        fscanf(fin, "%d", &v[i]);
    }
    quickSort(0, n-1);
    for(i=0; i<n; i++){
        fprintf(fout, "%d ", v[i]);
    }
    fprintf(fout, "\n");
    fclose(fin);
    fclose(fout);
    return 0;
}