Pagini recente » Cod sursa (job #2614689) | Cod sursa (job #748329) | Cod sursa (job #786297) | Cod sursa (job #448815) | Cod sursa (job #1209864)
#include<stdio.h>
FILE *in, *out;
int N, A[500005];
void open()
{
in = fopen("algsort.in", "rt");
out = fopen("algsort.out", "wt");
}
void read()
{
fscanf(in, "%d", &N);
for (int i = 0; i < N; i++)
fscanf(in, "%d", &A[i]);
}
void write()
{
for (int i = 0; i < N; i++)
fprintf(out, "%d ", A[i]);
}
void swap(int i, int j)
{
int aux = A[i];
A[i] = A[j];
A[j] = aux;
}
void quicksort(int left, int right)
{
if (left >= right) return;
int i = left, j = right, piv = A[(left + right) / 2];
while (i <= j)
{
while (A[i] < piv) i++;
while (A[j] > piv) j--;
if (i <= j)
{
swap(i, j);
i++, j--;
}
}
quicksort(left, j);
quicksort(i, right);
}
int main()
{
open();
read();
quicksort(0, N - 1);
write();
return 0;
}