Trier une liste (algorithme naïf)

A partir d’une liste contenant des nombres dans le désordre, vous allez devoir créer une nouvelle liste contenant ces mêmes nombres, mais dans l’ordre (du plus grand au plus petit ou l’inverse, selon votre choix).

Pour cela, il vous faudra commencer avec une liste de nombres dans le désordre et une liste vide, vous pouvez par exemple reproduire cette liste :

En fin d’exécution, votre algorithme devra afficher quelque chose comme ceci (vous pouvez donner la variable contenant la liste directement au bloc permettant d’afficher du texte) :

Interpréteur de JS
● ● ●
Début de l'exécution
→ 654,178,128,42,11
Fin de l'exécution

Vous pouvez faire un tri très simple : vous parcourez la liste pour trouver le nombre le plus grand, puis vous l’insérez dans la liste vide, et vous recommencez jusqu’à ce qu’il n’y ait plus de nombre à trier.

Faites attention aux conditions d’arrêt de vos boucles !

Les listes sont “indexées” ou “identifiées”, ce qui veut dire que chaque nombre a un “index” ou “identifiant”, qui est unique.

Dans la liste de l’exemple ci-dessus, les “index” ou “identifiants” sont les suivants :

Nombre1281165417842
Identifiant12345

Vous pouvez tirer parti de ces identifiants pour créer vos boucles et vous repérer.

Voici l’algorithme qui a donné l’exemple ci-dessus :

Dans cet exemple, la seconde boucle, à l’intérieur de la première, cherche le nombre le plus grand, et retient à l’aide de variables, sa valeur et sa position dans la liste non triée.

La première boucle, quant-à-elle, exécute la seconde autant de fois qu’il y a de valeurs à trier, et, en fin d’itération, vient insérer dans la liste triée la plus grande valeur trouvée par la seconde boucle.

Les insertions dans la liste triée tirent parti de l’indexation des listes : pour connaître la prochaine position non utilisée, on calcule la taille de la liste et on ajoute 1 (car la première position dans la liste est 1, une liste qui ne contient pas d’élément aura une taille de 0).