Pagini recente » Cod sursa (job #711848) | Cod sursa (job #2395046) | Cod sursa (job #2676468) | Cod sursa (job #2140090) | Cod sursa (job #1260364)
#include <stdio.h>
#include <stdlib.h>
int v[500001];
void swap(int a, int b)
{
int tmp = v[a];
v[a] = v[b];
v[b] = tmp;
}
int partition(int left, int right)
{
int i = left - 1, j;
int pivot = v[right];
for (j = left; j < right; j++) {
if (v[j] <= pivot) {
i = i + 1;
swap(i, j);
}
}
swap(i + 1, right);
return (i + 1);
}
void quicksort(int left, int right)
{
if (left < right) {
int no = rand() % (right - left) + left;
swap(no, right);
int q = partition(left, right);
quicksort(left, q - 1);
quicksort(q + 1, right);
}
}
int main()
{
int n, i;
FILE *fdin = fopen("algsort.in", "r");
FILE *fdout = fopen("algsort.out", "w");
fscanf(fdin, "%d", &n);
for (i = 0; i < n; i++) fscanf(fdin, "%d", &v[i]);
srand(time(NULL));
quicksort(0, n - 1);
for (i = 0; i < n; i++) fprintf(fdout, "%d ", v[i]);
fprintf(fdout, "\n");
fclose(fdin);
fclose(fdout);
return 0;
}