Algorithmes et Structures de Données en JavaScript

February 12, 2025 · View on GitHub

CI codecov

Ce dépôt contient des exemples d'implémentation en JavaScript de plusieurs algorithmes et structures de données populaires.

Chaque algorithme et structure de donnée possède son propre README contenant les explications détaillées et liens (incluant aussi des vidéos Youtube) pour complément d'informations.

Lisez ceci dans d'autres langues: English, 简体中文, 繁體中文, 한국어, 日本語, Polski, Español, Português, Русский, Türk, Italiana, Bahasa Indonesia, Українська, Arabic, Tiếng Việt, Deutsch, Uzbek עברית

Data Structures

Une structure de données est une manière spéciale d'organiser et de stocker des données dans un ordinateur de manière à ce que l'on puisse accéder à cette information et la modifier de manière efficiente. De manière plus spécifique, une structure de données est un ensemble composé d'une collection de valeurs, des relations entre ces valeurs ainsi que d'un ensemble de fonctions ou d'opérations pouvant être appliquées sur ces données.

B - Débutant, A - Avancé

Algorithmes

Un algorithme est une démarche non ambigüe expliquant comment résoudre une classe de problèmes. C'est un ensemble de règles décrivant de manière précise une séquence d'opérations.

B - Débutant, A - Avancé

Algorithmes par topic

Algorithmes par Paradigme

Un paradigme algorithmique est une méthode générique ou une approche qui sous-tend la conception d'une classe d'algorithmes. C'est une abstraction au-dessus de la notion d'algorithme, tout comme l'algorithme est une abstraction supérieure à un programme informatique.

Comment utiliser ce dépôt

Installer toutes les dépendances

npm install

Exécuter ESLint

Vous pouvez l'installer pour tester la qualité du code.

npm run lint

Exécuter tous les tests

npm test

Exécuter les tests par nom

npm test -- 'LinkedList'

Tests personnalisés

Vous pouvez manipuler les structures de données et algorithmes présents dans ce dépôt avec le fichier ./src/playground/playground.js et écrire vos propres tests dans file ./src/playground/__test__/playground.test.js.

Vous pourrez alors simplement exécuter la commande suivante afin de tester si votre code fonctionne comme escompté

npm test -- 'playground'

Informations Utiles

Références

▶ Structures de Données et Algorithmes sur YouTube

Notation Grand O

Comparaison de la performance d'algorithmes en notation Grand O.

Big O graphs

Source: Big O Cheat Sheet.

Voici la liste de certaines des notations Grand O les plus utilisées et de leurs comparaisons de performance suivant différentes tailles pour les données d'entrée.

Notation Grand OOpérations pour 10 élémentsOpérations pour 100 élémentsOpérations pour 1000 éléments
O(1)111
O(log N)369
O(N)101001000
O(N log N)306009000
O(N^2)100100001000000
O(2^N)10241.26e+291.07e+301
O(N!)36288009.3e+1574.02e+2567

Complexité des Opérations suivant les Structures de Données

Structure de donnéeAccèsRechercheInsertionSuppressionCommentaires
Liste1nnn
Pilenn11
Queuenn11
Liste Liéenn11
Table de Hachage-nnnDans le cas des fonctions de hachage parfaites, les couts seraient de O(1)
Arbre de Recherche BinairennnnDans le cas des arbre équilibrés, les coûts seraient de O(log(n))
Arbre Blog(n)log(n)log(n)log(n)
Arbre Red-Blacklog(n)log(n)log(n)log(n)
Arbre AVLlog(n)log(n)log(n)log(n)
Filtre de Bloom-11-Les faux positifs sont possibles lors de la recherche

Complexité des Algorithmes de Tri de Liste

NomMeilleurMoyennePireMémoireStableCommentaires
Tri Bullenn2n21Oui
Tri Insertionnn2n21Oui
Tri Sélectionn2n2n21Non
Tri par Tasn log(n)n log(n)n log(n)1Non
Merge sortn log(n)n log(n)n log(n)nOui
Tri Rapiden log(n)n log(n)n2log(n)Nonle Tri Rapide est généralement effectué in-place avec une pile de taille O(log(n))
Tri Shelln log(n)dépend du gap séquencen (log(n))21Non
Tri Comptagen + rn + rn + rn + rOuir - le plus grand nombre dans la liste
Tri Radixn * kn * kn * kn + kNonk - longueur du plus long index

ℹ️ A few more projects and articles about JavaScript and algorithms on trekhleb.dev