Pagini recente » Cod sursa (job #1655911) | Cod sursa (job #3278735) | Cod sursa (job #299511) | Cod sursa (job #2096410) | Cod sursa (job #276202)
Cod sursa(job #276202)
#include <stdio.h>
int n;
int a[500000];
void read();
void write();
void sort1();
void sort2(int, int);
int main()
{
read();
//sort1();
sort2(0, n - 1);
write();
return 0;
}
void sort2(int li, int ls)
{
if (li == ls)
{
return;
}
int i = li, j = ls, p = 0, tmp;
while (i < j)
{
if (a[i] > a[j])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
p = 1 - p;
}
i += p;
j -= (1 - p);
}
sort2(li, i);
sort2(i + 1, ls);
}
void sort1()
{
int i, j, tmp;
for (i = 0; i < n - 1; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (a[j] < a[i])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}
void write()
{
int i;
FILE *fout = fopen ("algsort.out", "w");
for (i = 0; i < n; ++i)
{
fprintf (fout, "%d ", a[i]);
}
fclose (fout);
}
void read()
{
int i;
FILE *fin = fopen ("algsort.in", "r");
fscanf (fin, "%d", &n);
for (i = 0; i < n; ++i)
{
fscanf (fin, "%d", &a[i]);
}
fclose (fin);
}