ProAlgos : C++
Ce projet est axé sur l'implémentation d'algorithmes et de structures de données en C++, tout en suivant les bonnes pratiques d'ingénierie logicielle , telles que :
- Écrire du code bien documenté
- Adhérer aux directives du code
- Rédaction et réussite des tests unitaires
- Réviser le code de chacun
Objectifs
- Implémenter des algorithmes et des structures de données
- Apprenez à devenir de meilleurs développeurs de logiciels
- Guidez-vous mutuellement sur le contrôle de version, les tests unitaires et les algorithmes
Comment s'impliquer
Il existe plusieurs façons de s’impliquer.
Vous souhaitez contribuer à l'open source et vous impliquer dans le projet ?
- Lire les directives de contribution
- Forkez le dépôt
- Créez un problème décrivant ce que vous souhaitez ajouter ou revendiquez un problème à gagner
- Créez une branche et ajoutez votre code
- Soumettez une pull request et référencez le problème qu'elle clôture
Vous pouvez trouver plus de détails sur les étapes ci-dessus dans les directives de contribution, alors assurez-vous de les consulter.
Vous souhaitez simplement suggérer un nouvel algorithme ou signaler un bug ?
Créez un nouveau problème et nous le traiterons à partir de là. ?
Contenu
✅ = a des tests unitaires
Algorithmes
Retour en arrière
Programmation dynamique
- 0-1 sac à dos ✅
- Changement de pièces ✅
- Sous-séquence décroissante la plus longue ✅
- Multiplication de chaîne matricielle ✅
- Sous-tableau contigu à somme maximale : l'algorithme de Kadane ✅
- Coupe de tige ✅
- Sélection d'activités pondérée ✅
Théorie des nombres
- Coefficient binomial ✅
- Algorithmes euclidiens
- Plus grand diviseur commun (PGCD) ✅
- Algorithme euclidien étendu (coefficients de Bézout) ✅
- Exponentiation rapide ✅
- Nième numéro de Fibonacci
- Algorithme de temps linéaire ✅
- Algorithme de temps logarithmique ✅
- Vérification parfaite du numéro ✅
- Nombres premiers
- Primorial ✅
- Tamis d'Ératosthène (simple) ✅
Recherche
- Recherche binaire ✅
- Recherche linéaire ✅
- Recherche ternaire ✅
Tri
- Tri à bulles ✅
- Tri par seau ✅
- Tri au peigne ✅
- Tri par comptage (stable) ✅
- Tri en tas ✅
- Tri par insertion ✅
- Tri par fusion ✅
- Tri rapide ✅
- Tri par base
- Tri par sélection ✅
- Tri des coquillages ✅
Chaîne
- Sous-séquence commune la plus longue ✅
- Recherche (correspondance de modèle)
- Modifier le problème de distance ✅
- Gare de triage ✅
- Permutation
Structures de données
Liste liée
- Liste à chaînage unique ✅
- Liste doublement chaînée ✅
File d'attente
Ensemble
Empiler
Arbre
- Arbre de recherche binaire ✅
- Arbre Fenwick ✅
Compilation
Pour compiler les fichiers sources, exécutez make
à partir du répertoire C++
. Cela créera des binaires exécutables dans le répertoire bin
.
Pour compiler et exécuter tous les tests, exécutez make test
. Cela compilera tous les tests (de la même manière que décrit ci-dessus) et les exécutera, affichant les résultats.
Afin d'exécuter un test spécifique et de voir ses résultats, exécutez-le manuellement à partir du répertoire bin
après avoir appelé make
. Par exemple, cette commande (exécutée depuis bin
) exécuterait uniquement les tests unitaires pour l'algorithme N Queens :
Pour supprimer tous les fichiers créés lors de la compilation, exécutez make clean
. Vous n'avez pas besoin de le faire à chaque fois que vous apportez des modifications à un fichier et que vous souhaitez le recompiler. Exécutez simplement make
et il recompilera uniquement les fichiers dont le contenu a changé.
Pour voir ce qui se passe en arrière-plan lors de la compilation et des tests, consultez les fichiers suivants :
- Makefile
- CMakeLists.txt
- Script de test
Pour plus d'informations sur make
, consultez le manuel GNU make. Pour plus d'informations sur CMake
, consultez le didacticiel CMake.
Mainteneurs
Ce projet est activement maintenu par @alxmjo et inactivement par @faheel.
Licence
Ce projet est sous licence selon les termes de la licence MIT.