Pagini recente » Cod sursa (job #1456127) | Cod sursa (job #2723125) | Cod sursa (job #2493901) | Cod sursa (job #2374519) | Cod sursa (job #2466609)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define VALOARE 500000
int v[VALOARE];
int pivotare(int st, int dr){
int pivot, i, j, aux;
pivot=v[dr];
i=0;
for(j=0; j<dr; j++)
if(v[j]<=pivot){
aux=v[i];
v[i]=v[j];
v[j]=aux;
i++;
}
aux=v[i];
v[i]=v[dr];
v[dr]=aux;
return i;
}
int piv_random(int st, int dr){
int random, aux;
random=st+rand()%(dr-st);
aux=v[random];
v[random]=v[dr];
v[dr]=aux;
return pivotare(st, dr);
}
void quicksort(int st, int dr){
int pivot;
if(st<dr){
pivot=piv_random(st, dr);
quicksort(st, pivot-1);
quicksort(pivot+1, dr);
}
}
int main(){
int n, i;
FILE *fin, *fout;
fin=fopen("algsort.in", "r");
fscanf(fin, "%d", &n);
srand(time(NULL));
for(i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
fclose(fin);
quicksort(0, n-1);
fout=fopen("algsort.out", "w");
for(i=0; i<n; i++)
fprintf(fout, "%d ", v[i]);
fclose(fout);
return 0;
}