Cod sursa(job #544593)
#include<stdio.h>
#include<stdlib.h>
int partitie(int s,int d, int *x){
int i,j,aux;
int k = x[s];
i = s + 1;
j = d;
while(i <= j)
{
while(k >= x[i] && i < d)
i++;
while(k <= x[j] && j > s)
j--;
if(i < j){
aux = x[i];
x[i] = x[j];
x[j] = aux;
}
else {
aux = x[s];
x[s] = x[j];
x[j] = aux;
return j;
}
}
}
void qs(int s,int d,int *x) {
if(s < d) {
int q = partitie(s, d, x);
qs(s, q-1, x);
qs(q+1, d, x);
}
}
int main(){
int *x;
int i,n;
FILE *s = fopen("algsort.in", "r");
FILE *d = fopen("algsort.out", "w");
fscanf(s,"%d", &n);
x = (int *)calloc(n, sizeof(int));
for(i = 0 ; i < n ; i++)
fscanf(s,"%d", &x[i]);
qs(0, n-1, x);
for(i = 0 ; i < n ; i++)
fprintf(d,"%d ",x[i]);
return 0;
}