Ryad Mehiri cb7857cd43 F1 : trier les transactions avec qsort (O(n²) → O(n log n))
Le tri à bulles faisait n(n-1)/2 = 450 millions de comparaisons pour
30 000 transactions. qsort trie en O(n log n) avec une fonction de
comparaison (montant, puis id). Les id étant distincts, l'ordre est
total et le résultat identique malgré un tri non stable.

Temps (-O2) : 3,05 s → 1,17 s. Empreinte inchangée (ff68d260a7a58441).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:42:34 +02:00
2026-10-21 08:17:46 +02:00
2026-10-21 08:17:46 +02:00

TD3 — Complexité algorithmique (R5.A.04)

Fichiers

  • banque.c : le programme à analyser et à optimiser
  • evaluer.sh : vérifie votre solution et mesure son temps d'exécution pour le concours

Démarrage

gcc -O2 banque.c -o banque
time ./banque                      # notez le temps et l'empreinte
gcc -O0 -g -pg banque.c -o banque_pg
./banque_pg && gprof ./banque_pg gmon.out > profil_avant.txt

Règles

  • L'empreinte affichée doit rester ff68d260a7a58441.
  • Interdit : modifier les constantes, alea, generer_transactions ou le format du rapport, écrire les résultats en dur, utiliser des threads ou des bibliothèques externes.
  • Autorisé : changer les signatures, réorganiser main, ajouter fonctions et structures, utiliser la bibliothèque standard du C.

Rendu

  • Un commit par optimisation.
  • COMPTE_RENDU.md à la racine : complexités avant / après de F1 à F10, profils gprof avant / après, justification de chaque optimisation.
  • Concours : ./evaluer.sh banque.c <votre_nom> vérifie l'empreinte et mesure le temps. La complexité cyclomatique est calculée à la main et vérifiée par l'enseignant.
S
Description
No description provided
Readme 1.1 MiB
Languages
C 89.5%
Shell 10.5%