Pagini recente » Cod sursa (job #1468810) | Cod sursa (job #2673999) | Cod sursa (job #216597) | Cod sursa (job #2618256) | Cod sursa (job #645143)
Cod sursa(job #645143)
#include <stdio.h>
#include <stdlib.h>
#define DIST(x, y) (y - x + 1)
#define SWAP(x, y) (x^=y^=x^=y)
unsigned long int *arr = NULL;
long partition(long lo, long hi)
{
short dLo = 0, dHi = 1;
while(lo < hi)
{
if(arr[lo] > arr[hi])
{
SWAP(dLo, dHi);
SWAP(arr[lo], arr[hi]);
}
lo += dLo;
hi -= dHi;
}
return lo;
}
void sort(long lo, long hi)
{
long index;
if(lo < hi)
{
index = partition(lo, hi);
sort(lo, index - 1);
sort(index + 1, hi);
}
}
int main()
{
unsigned int i;
unsigned int size;
FILE *fpi = fopen("algsort.in", "r");
FILE *fpo = fopen("algsort.out", "w");
fscanf(fpi, "%u", &size);
arr = (unsigned long int*)malloc(sizeof(unsigned long int) * size);
for(i = 0; i < size; ++i)
fscanf(fpi, "%u", &arr[i]);
sort(0L, (long)(size - 1));
for(i = 0; i < size; ++i)
fprintf(fpo, "%u ", arr[i]);
fclose(fpo);
fclose(fpi);
free(arr);
return 0;
}