Aller au contenu principal
sports_esports Lab Canvas 2D Algorithmes de tri File d'opérations Zéro dépendance

Tri visualisé — cinq algorithmes de tri animés en Canvas 2D

Cinq algorithmes de tri (à bulles, insertion, sélection, tri rapide, tri fusion) qui trient sous vos yeux un tableau de barres, avec comparaisons et échanges surlignés et compteur en direct. Chaque algorithme précalcule une file d'opérations rejouée pas à pas dans la boucle de rendu : le tri reste pur et testable, l'animation reste fluide et ne bloque jamais. Zéro dépendance.

Touches 1-5 ou T : choisir l'algorithme Espace : lancer / relancer l'animation R : générer un nouveau tableau

Voir un algorithme travailler

Un tri, écrit noir sur blanc, n'est qu'une boucle qui rend un tableau ordonné. Ce que ce code ne montre pas, c'est comment il y parvient : combien de comparaisons, combien de déplacements, et selon quel chemin. En transformant chaque valeur en une barre et chaque opération en une image, je rends ce cheminement visible. On voit la barre comparée surlignée en indigo, la barre déplacée passer en accent, et le tableau se figer progressivement en ambre trié.

Cinq algorithmes, deux familles de complexité

Les touches 1 à 5 (ou T pour faire défiler) basculent entre cinq classiques. Le tri à bulles, par insertion et par sélection sont en O(n²) : le nombre de comparaisons croît avec le carré de la taille du tableau, ce qui se lit à l'œil nu au compteur qui s'emballe. Le tri rapide (quicksort) et le tri fusion (merge sort) tiennent en O(n log n) en moyenne et bouclent en bien moins d'opérations sur le même tableau. Régénérer le jeu de données avec R, puis relancer chaque algorithme sur les mêmes barres, rend cet écart concret : ce n'est plus une notation abstraite, c'est un compteur qui double ou qui reste sage.

Comparaisons et échanges, les deux coûts réels

Un tri se paie de deux façons : les comparaisons (est-ce que cette valeur passe avant cette autre ?) et les déplacements de données (échanges ou écritures). Distinguer ces deux gestes à l'écran est éclairant. Le tri par sélection, par exemple, compare énormément mais échange très peu ; le tri à bulles fait les deux en abondance ; le tri fusion ne « permute » rien mais réécrit des segments entiers. Visualiser ces signatures, c'est comprendre pourquoi le choix d'un algorithme dépend toujours du coût dominant dans le contexte réel — accès disque, mémoire, données déjà presque triées.

Animer sans bloquer : une file d'opérations

Le piège serait d'exécuter le tri d'un bloc puis d'« animer » un résultat déjà calculé — ou pire, d'insérer des pauses au cœur de la boucle de tri et de geler l'onglet. J'ai fait l'inverse : chaque algorithme trie une copie du tableau et enregistre au passage la suite de ses opérations élémentaires (comparer, échanger, écrire). La boucle de rendu se contente ensuite de rejouer cette file pas à pas, quelques opérations par image via requestAnimationFrame. Le calcul et l'affichage sont ainsi découplés : l'algorithme reste pur et testable, le rendu reste fluide, et la cadence est réglable sans toucher à la logique de tri.

Ce que ce découplage dit de mes projets

Séparer le quoi (l'algorithme qui produit une suite d'événements) du comment on l'affiche (la boucle qui les rejoue) est exactement le genre de découpage qui fait la différence sur une application réelle : une logique métier isolée, déterministe et couverte par des tests, et une couche de présentation qu'on peut rythmer, instrumenter ou remplacer sans rien casser ailleurs. Pour vous, cela se traduit par un code plus simple à faire évoluer, à diagnostiquer quand une lenteur apparaît, et à reprendre en main par vos propres équipes. La démo est un jouet ; la discipline qu'elle illustre, non.

Photo d'Emmanuel BALLERY, fondateur de x10

À propos de l'auteur

Emmanuel BALLERY est le fondateur de x10 solutions. Ces petits jeux sont surtout un plaisir de développeur, codés le week-end — pas une vitrine de mes missions, qui sont bien plus exigeantes. J'y soigne quand même la performance et la lisibilité, par habitude.

Voir plus arrow_forward
rocket_launch

Un vrai projet en tête ?

Ce petit jeu m'amuse, mais il ne dit pas grand-chose de mon métier : mes missions sont bien plus complexes. Si vous avez une application à concevoir ou à fiabiliser, c'est là que je suis vraiment utile.

Discuter de mon projet arrow_forward