Pagini recente » Cod sursa (job #2026242) | Cod sursa (job #977693) | Cod sursa (job #1510885) | Cod sursa (job #353529) | Cod sursa (job #544566)
Cod sursa(job #544566)
#include<stdio.h>
#include<stdlib.h>
int partitie(int s,int d, int *x){
int i,j,aux;
int k = x[s];
i = s;
j = d + 1;
while(1) {
do {
i++;
}while(k >= x[i] && i < d);
do {
j--;
}while(k <= x[j] && j > s) ;
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;
}