Pagini recente » Cod sursa (job #331875) | Cod sursa (job #1382028) | Cod sursa (job #11815) | Cod sursa (job #1735210) | Cod sursa (job #1889093)
#include <stdio.h>
int a[500000],n,i;
void read()
{
FILE *f;
f = fopen("algsort.in","r");
fscanf(f, "%d", &n);
for ( i = 1; i <= n; i++)
fscanf(f, "%d", &a[i]);
fclose(f);
}
void swap(int *x, int *y)
{
int q = *x;
*x = *y;
*y = q;
}
void qs(int l, int r)
{
int i = l, j = r, q = a[ (i + j) / 2] ;
while (i < j)
{
while (a[i] < q) i++;
while (a[j] > q) j--;
if (i <= j)
{
swap(&a[i], &a[j]);
i++; j--;
}
}
if (i < r) qs(i, r);
if (l < j) qs(l, j);
}
void write()
{
FILE *f;
f = fopen("algsort.out","w");
for ( i = 1; i <= n; i++)
fprintf(f, "%d ", a[i]);
fclose(f);
}
int main()
{
read();
qs(1,n);
write();
return 0;
}