#include <stdio.h> #include <stdlib.h> void permuter(long* a,long* b){ long tmp = *a; *a = *b; *b = tmp; } size_t partition(long* A,size_t p,size_t r){ long pivot = A[r-1]; size_t i = p; for(size_t j = p;j < r-1;j++){ if(A[j] <= pivot){ permuter(A+i,A+j); i++; } } permuter(A+i,A+r-1); return i; } void sousTriRapide(long* A,size_t p,size_t r){ if(p+1 < r){ size_t q = partition(A,p,r); sousTriRapide(A,p,q); sousTriRapide(A,q+1,r); } } void triRapide(long* A,size_t n){ sousTriRapide(A,0,n); } void printTab(long* A,size_t n){ printf("{"); for(size_t i = 0;i < n;i++){ if(i != 0){ printf(","); } printf("%ld",A[i]); } printf("}\n"); } int main(int argc,char** argv){ long* A = malloc((argc-1)*sizeof(long)); for(size_t i = 0;i < argc-1;i++){ A[i] = atol(argv[i+1]); } printf("Tableau d'entrée: "); printTab(A,argc-1); triRapide(A,argc-1); printf("Tableau de sortie: "); printTab(A,argc-1); free(A); }