Trier un tableau par ordre croissant
Bonjour à tous,
je n'arrive pas à trouver comment trier un tableau. J'ai fais pour l'instant ça en PHP:
Code:
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
| // le tableau avec les valeurs à trier
$tab[0] = 8;
$tab[1] = 5;
$tab[2] = 4;
$tab[3] = 9;
$nbvaleurs = 4-1; // le premier indice est 0, pas 1. je ne met pas 3 tout de suite pour me repérer plus facilement ;o)
/////////////////////
// TRI CROISSANT //
/////////////////////
for ($i = 0; $i < $nbvaleurs; $i++)
{
$flag = $nbvaleurs;
for($j = 0; $j <$nbvaleurs; $j++)
{
// trouver le comparé
$Compare = $tab[$j];
// trouver le comparant
$flag = $flag - 1;
$NbComparant = $nbvaleurs - $flag;
$Comparant = $tab[$NbComparant];
// sauvegarder le comparant
$SavComparant = $tab[$NbComparant];
// COMPARER
if($Compare>$Comparant)
{
// inverser le comparant et le comparé
$tab[$NbComparant] = $tab[$i];
$tab[$i] = $SavComparant;
}
}
}
//////////////////// |
Ca trie bien comme il le faut, mais seulement quand il y a moins de 5 valeurs à trier 8O . Est-ce que vous avez une idée pour arranger tout ça?
Merci d'avance :wink:
PS: j'ai posté également dans le forum Autres langages et outils. On m'a conseillé de poster ici, donc j'ai mis l'autre sujet en délestage... (Pas taper! pas Multipost! Nooon! Aïe! maiheuuuuuu! :lol: )
Re: Trier un tableau par ordre croissant
Citation:
Envoyé par Halleck
Code:
1 2 3 4 5 6 7 8 9 10 11
|
// COMPARER
if($Compare>$Comparant)
{
// inverser le comparant et le comparé
$tab[$NbComparant] = $tab[$i];
$tab[$i] = $SavComparant;
}
}
}
//////////////////// |
je ne comprends pas trop ces lignes, comme je ne connais pas le php.
A quoi servent-elles ?
quand tu regardes le code de gangsoleil (typiqument un tri à bulles), seul le deuxième indice intervient pour les comparaisons.
quant à tri machin, tri bidule... ce sont juste des noms de tris, donc si tu veux des infos complémentaires sur d'autres possibilités tu sais ce qu'il te reste à faire.
Re: Trier un tableau par ordre croissant
Citation:
Envoyé par PINGOUIN_GEANT
Citation:
Envoyé par Halleck
Code:
1 2 3 4 5 6 7 8 9 10 11
|
// COMPARER
if($Compare>$Comparant)
{
// inverser le comparant et le comparé
$tab[$NbComparant] = $tab[$i];
$tab[$i] = $SavComparant;
}
}
}
//////////////////// |
je ne comprends pas trop ces lignes, comme je ne connais pas le php.
A quoi servent-elles ?
Le PHP n'intervient pas trop ici, juste pour les $ je pense... Dans ces lignes j'attribue la valeur du comparant au comparé si le permier est plus grand que le second. En gros j'inverse la position des valeurs comparées.
Pour le "tri par insertion", etc..., j'ai trouvé ce que ca signifiait dans un exemple fourni par défaut avec QBasic 4.5, avec plein de tris différents. Je comprend la démo, mais les algorythmes en eux-mêmes non :oops:
Je vais essayer de comprednre ces exemple, et en attendant je methttp://www.developpez.net/forums/images/resolu.gif. Si jamais je n'y arrive pas, je reposte ici.
Merci à tous pour votre aide :wink: