Cod sursa(job #1815249)

Utilizator gorneanu.andreiFMI Gorneanu Andrei gorneanu.andrei Data 24 noiembrie 2016 23:00:38
Problema Sortare prin comparare Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
//QUICKSORT

#include <stdio.h>
#include <time.h>
#define MAX 500005
int v[MAX];

void quicksort(int st,int dr){

    int i = st, j = dr, pivot, aux;
    //srand(time(NULL));
    pivot = rand()%(dr - st + 1)+st;

    do{
        while(v[i] < v[pivot] && i <= dr)
            ++i;
        while(v[j] > v[pivot] && j >= st)
            --j;

        if(i <= j){
            aux = v[i];
            v[i] = v[j];
            v[j] = aux;
            ++i;
            --j;
        }
    }while(i <= j);

    if(st < j) quicksort(st,j);
    if(dr > i) quicksort(i,dr);
}

int main(){

    int n, i;
    FILE *f, *g;
    f = fopen("algsort.in","r");
    g = fopen("algsort.out","w");
    fscanf(f,"%d",&n);

    for(i = 1;i <= n; ++i)
        fscanf(f,"%d",&v[i]);

    quicksort(1,n);
    for(i = 1;i <= n; ++i)
        fprintf(g,"%d ",v[i]);

    return 0;
}