Pagini recente » Cod sursa (job #2752404) | Cod sursa (job #967102) | Cod sursa (job #2730226) | Cod sursa (job #2293172) | Cod sursa (job #1464783)
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int i, int j)
{
int aux = a[i];
a[i] = a[j];
a[j] = aux;
}
int partition(int *a, int left, int right)
{
int v = a[left];
int i = left + 1;
int j = right;
while (1) {
while (a[i] < v && i < right)
i++;
while (a[j] >= v && j > left)
j--;
if (i >= j)
break;
swap(a, i, j);
}
swap(a, left, j);
return j;
}
void sort(int *a, int left, int right)
{
if (left >= right)
return;
int v = partition(a, left, right);
sort(a, left, v - 1);
sort(a, v + 1, right);
}
int main()
{ int i,n,a[32000];
// int a[100] = { 0 };
FILE *f = fopen("algsort.in","r");
FILE *g = fopen("algsort.out","w");
fscanf(f,"%d", &n);
for(i=0; i < n;i++)
fscanf(f,"%d",&a[i]);
sort(a, 0, n - 1);
for ( i = 0; i < n; i++)
printf("%d ", a[i]);
return 0;
}