Pagini recente » Cod sursa (job #493504) | Cod sursa (job #3033563) | Cod sursa (job #2668977) | Cod sursa (job #2480257) | Cod sursa (job #767190)
Cod sursa(job #767190)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef unsigned int uint;
FILE *in, *out;
uint v[500000], N;
void quicksort(int l, int r)
{
int aux, ll, rr, il, ir, pivot;
if(l < r)
{
ll = l;
rr = r;
il = 0;
ir = -1;
pivot = l + rand() % (r - l + 1);
aux = v[pivot]; v[pivot] = v[ll]; v[ll] = aux;
while(ll < rr)
{
if(v[ll] > v[rr])
{
aux = v[ll]; v[ll] = v[rr]; v[rr] = aux;
aux = -il; il = -ir; ir = aux;
}
ll += il;
rr += ir;
}
pivot = ll;
quicksort(l, pivot - 1);
quicksort(pivot + 1, r);
}
}
int main()
{
int i;
in = fopen("algsort.in", "r");
out = fopen("algsort.out", "w");
srand(time(NULL));
fscanf(in, "%d", &N);
for(i = 0; i < N; ++i)
fscanf(in, "%d", &v[i]);
quicksort(0, N-1);
for(i = 0; i < N; ++i)
fprintf(out, "%d ", v[i]);
fprintf(out, "\n");
fclose(in);
fclose(out);
return 0;
}