Pagini recente » Cod sursa (job #272109) | Cod sursa (job #236085) | Cod sursa (job #87416) | Cod sursa (job #489547) | Cod sursa (job #382927)
Cod sursa(job #382927)
#include <stdio.h>
#include <stdlib.h>
const char* inFile = "algsort.in";
const char* outFile = "algsort.out";
void swap(int* x, int* y) {
int aux = *x; *x = *y; *y = aux;
}
void quick(int* a,int le,int ri) {
if(le < ri) {
int i = le - 1, j = ri + 1, p = a[le + rand()%(ri - le + 1)];
//printf("%d\n",p);
while(i<=j) {
do ++i; while (i<=ri && a[i] < p);
do --j; while (j>=le && a[j] > p);
if(i < j) {
swap(&a[i],&a[j]);
}
}
quick(a,le,j);
quick(a,i,ri);
}
}
int main() {
FILE *fin = fopen(inFile,"rt"),
*fout = fopen(outFile,"wt");
int N,*A = calloc(500000,sizeof(int));
fscanf(fin,"%d",&N);
int i;
for(i = 0;i < N ; ++i) fscanf(fin,"%d",&A[i]);
quick(A,0,N - 1);
for(i = 0;i < N ; ++i) fprintf(fout,"%d ",A[i]);
return 0;
}