Pagini recente » Cod sursa (job #505744) | Istoria paginii planificare/sedinta-20090316 | Cod sursa (job #1725546) | Cod sursa (job #1214931) | Cod sursa (job #1239464)
#include <stdio.h>
#include <stdlib.h>
FILE *fin;
FILE *fout;
int v[500010];
void xsort(int l, int r)
{
int piv = v[rand() % (r - l + 1) + l];
int i, j;
i = l;
j = r;
while(i <= j)
{
while(v[i] < piv && i<=r)
i++;
while(v[j] > piv)
j--;
if(i <= j)
{
v[i] = v[i] + v[j] - (v[j] = v[i]);
i++;
j--;
}
}
if(j > l)
xsort(v, l, j);
if(i < r)
xsort(v, i, r);
}
int main()
{
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
int n, aux, i;
fscanf(fin, "%d", &n);
for(i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
srand(26);
xsort(0, n-1);
for (i = 0; i < n; i++)
fprintf(fout, "%d ", v[i]);
fclose(fin);
fclose(fout);
return 0;
}