1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* fonction de tri */
int DIJPIVOT(int enonce[2][8],int G,int D){
if(G<D){
int i=G+1; // on commence le tri a partir du deuxieme element
int ip=G; // on choisit le premier élément de la portion du tableau à trier comme L'élément à ranger
int X=enonce[1][G]; // on recupere sa valeur (deuxieme ligne)
int temp0;
int temp1;
while(i<=D){// si le tableau contient au moins 2 colonnes
if(enonce[1][i]<=X){ // si l'élément courant est plus petit que notre element à ranger
if(i!=ip+1){ // si l'element courant n'est pas juste après l'element à ranger
temp0=enonce[0][i]; // on place l'élément courant (censé être avant) juste après l'element à ranger
temp1=enonce[1][i];
enonce[0][i]=enonce[0][ip+1];
enonce[1][i]=enonce[1][ip+1];
enonce[0][ip+1]=temp0;
enonce[1][ip+1]=temp1;
}
temp0=enonce[0][ip]; // on fait l'echange entre l'element plus petit et l'element à ranger
temp1=enonce[1][ip];
enonce[0][ip]=enonce[0][ip+1];
enonce[1][ip]=enonce[1][ip+1];
enonce[0][ip+1]=temp0;
enonce[1][ip+1]=temp1;
ip++;
}
i++;
}
DIJPIVOT(enonce[2][8], G,ip-1); //on appelle recursivement la fonction sur les portions gauche et droite du tableau
DIJPIVOT(enonce[2][8],ip+1, D);
}
return 0; // retour bon , la gestion d'erreur na pas encore été mise en place
}
int main(){
/*tableau à trier suivant les valeur de la deuxieme ligne (ASC) */
int enonce[2][8];
enonce[0][0]=1;
enonce[1][0]=4;
enonce[0][1]=2;
enonce[1][1]=2;
enonce[0][2]=3;
enonce[1][2]=5;
enonce[0][3]=4;
enonce[1][3]=3;
enonce[0][4]=5;
enonce[1][4]=1;
enonce[0][5]=6;
enonce[1][5]=1;
enonce[0][6]=7;
enonce[1][6]=3;
enonce[0][7]=8;
enonce[1][7]=2;
/*appel de la fonction de tri */
DIJPIVOT(int enonce[2][8],int 0,int 7);
/*affichage du tableau trié */
int i;
for(i=0;i<7;i++){
printf("%d ",enonce[0][i]);
}
printf("\n");
for(i=0;i<8;i++){
printf("%d ",enonce[1][i]);
}
return 0;
}
} |