Pagini recente » Cod sursa (job #1992260) | Cod sursa (job #2676630) | Cod sursa (job #356416) | Cod sursa (job #398262) | Cod sursa (job #283332)
Cod sursa(job #283332)
#include <stdio.h>
#include <stdlib.h>
int n;
//int r = 1;
int a[500000];
void read();
void write();
void sort(int, int);
int main()
{
read();
// printf ("li\tr\tls\n");
sort(0, n - 1);
write();
return 0;
}
void sort(int li, int ls)
{
if (li >= ls)
{
return;
}
int i = li, j = ls, p = 0, tmp;
// srand (r);
// r = (rand() % (ls - li + 1)) + li;
// printf ("%d\t%d\t%d\n", li, r, ls);
// tmp = a[li];
// a[li] = a[r];
// a[r] = 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);
}
sort(li, i - 1);
sort(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);
}