Nu aveti permisiuni pentru a descarca fisierul grader_test1.in
Cod sursa(job #1209860)
| Utilizator | Data | 18 iulie 2014 19:57:36 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.79 kb |
#include<stdio.h>
FILE *in, *out;
int N, A[500005];
void open()
{
in = fopen("quicksort.in", "rt");
out = fopen("quicksort.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;
}