Pagini recente » Cod sursa (job #3141940) | Cod sursa (job #2828372) | Cod sursa (job #2260087) | Monitorul de evaluare | Cod sursa (job #1683883)
#include <stdio.h>
void swap(int *a, int *b)
{
int aux = *a;
*a = *b;
*b = aux;
}
void quickSort(int st, int dr, int *a)
{
int i = st, j = dr, pivot = a[(st + dr) >> 1];
do {
while(a[i] < pivot && i < dr) ++i;
while(a[j] > pivot && j > st) --j;
if(i <= j) {
swap(&a[i], &a[j]);
++i, --j;
}
} while(i <= j);
if(st < j) quickSort(st, j, a);
if(i < dr) quickSort(i, dr, a);
}
int main()
{
int i, n, *arr;
FILE *in = fopen("algsort.in", "r");
FILE *out = fopen("algsort.out", "w");
fscanf(in, "%d", &n);
arr = (int *) malloc(n * sizeof(int));
for(i = 0; i < n; ++i)
fscanf(in, "%d", &arr[i]);
quickSort(0, n - 1, arr);
for(i = 0; i < n; ++i)
fprintf(out, "%d ", arr[i]);
fclose(out);
fclose(in);
return 0;
}