nero27 | Code :
- //fonction qui echange les enregistrements du tableau
- function echange($i,$j)
- {
- $GLOBALS["listmembre"];
- $tampon1=$GLOBALS["listmembre"][$i][0];
- $tampon2=$GLOBALS["listmembre"][$i][1];
- $tampon3=$GLOBALS["listmembre"][$i][2];
- $tampon4=$GLOBALS["listmembre"][$i][3];
- $GLOBALS["listmembre"][$i][0]=$GLOBALS["listmembre"][$j][0];
- $GLOBALS["listmembre"][$i][1]=$GLOBALS["listmembre"][$j][1];
- $GLOBALS["listmembre"][$i][2]=$GLOBALS["listmembre"][$j][2];
- $GLOBALS["listmembre"][$i][3]=$GLOBALS["listmembre"][$j][3];
- $GLOBALS["listmembre"][$j][0]=$tampon1;
- $GLOBALS["listmembre"][$j][1]=$tampon2;
- $GLOBALS["listmembre"][$j][2]=$tampon3;
- $GLOBALS["listmembre"][$j][3]=$tampon4;
- }
- //fonction qui fait un tri décroissant
- function trirapidedesc($G,$D)
- {
- if($D<=$G)
- return;
- $val=$GLOBALS["listmembre"][$D][1];
- $g=$G-1;
- $d=$D;
- do
- {
- while(($GLOBALS["listmembre"][++$g][1]>$val));
- while(($GLOBALS["listmembre"][--$d][1]<$val)&&($d>$G));
- if($g<$d)
- echange($g,$d);
- }
- while($g<$d);
- echange($g,$D);
- trirapidedesc($G,$g-1);
- trirapidedesc($g+1,$D);
- }
- //fonction qui fait un tri croissant
- function trirapideasc($G,$D)
- {
- if($D<=$G)
- return;
- $val=$GLOBALS["listmembre"][$D][1];
- $g=$G-1;
- $d=$D;
- do
- {
- while(($GLOBALS["listmembre"][++$g][1]<$val));
- while(($GLOBALS["listmembre"][--$d][1]>$val)&&($d>$G));
- if($g<$d)
- echange($g,$d);
- }
- while($g<$d);
- echange($g,$D);
- trirapideasc($G,$g-1);
- trirapideasc($g+1,$D);
- }
- //tableau de test
- $listmembre=array(array("bernard",12,"truc","chose" ),array("maurice",3,"machin","chose" ));
- trirapideasc(0,1);
- /*Résultat obtenu
- array(2) {
- [1]=> array(4) {
- [0]=> string(7) "maurice"
- [1]=> int(3)
- [2]=> string(6) "machin"
- [3]=> string(5) "chose"
- }
- [0]=> array(4) {
- [0]=> string(7) "bernard"
- [1]=> int(12)
- [2]=> string(4) "truc"
- [3]=> string(5) "chose"
- }
- }
- */
|
Message édité par nero27 le 13-06-2005 à 09:16:17
|