![]() ![]() » Pas de théorie, je veux utiliser le programme JavaScript | » Tri à bulles |
Si vous voulez trier ces jetons numérotés par ordre croissant, comment allez-vous faire sachant que les jetons ne peuvent faire que des sauts de puce successifs jeton par jeton ?
Sans faire appel à la fonction intégrée L.sort du langage JavaScript, une réponse facilement programmable est la suivante : on passe en revue tous les éléments x1, x2, ..., xn (dans cet exemple n = 7).
Cette méthode, très simple à programmer, consistant à insérer un élément à la bonne place, est celle que l'on utilise intuitivement pour classer des cartes, des fiches numérotées, des livres dans un rayon de bibliothèque.
! Le programme ci-dessous trie correctement toute série de nombres. Il prévoit de s'appliquer à des chaînes de caractères alphanumériques. Dans ce dernier cas, JavaScript utilise l'ordre lexicographique (celui du dictionnaire) mais on peut avoir des surprises car dans ce cas, par exemple, 100, commençant par 1, est "rangé" avant 7...
Passons en revue chaque élément xi de la liste du second au n-ème en le comparant à tous ceux dont le rang est inférieur :
i = 2, x2 initial = 6 | rangs 2 comparé à rang1, pas d'échange : |
|
i = 3, x3 initial = 3 |
rang 3 comparé aux rangs 2 et 1 : 3 < 6 et 3 < 5. Le 3 saute entre le 5 et le 6 puis s'insère devant le 5. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
i = 4, x4 initial = 1 |
rang 4 comparé aux rangs 3, 2 et 1 : 1 < 6 et 1 < 5 et 1<3. Le 1 saute entre le 5 et le 6 puis entre le 3 et le 5 et s'insère finalement devant le 3. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
i = 5 | Le 2 prend place entre le 1 et le 3. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
i = 6 | Le 7 este à sa place. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
i = 7 | Le 4 prend place entre le 3 et le 5. |
|
<SCRIPT
LANGUAGE=JavaScript> |