Adloun

Un qui bat un

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 3 — Algorithmes, programmes et complexité

Énoncé

Le tri par insertion est quadratique, le tri par partition-fusion est quasi-linéaire. Mesurer les deux sur des tableaux aléatoires de tailles croissantes. Que constate-t-on, et qu'en conclure ?

Corrigé

Mesure sur des tableaux de int tirés au hasard, compilés en -O2, temps moyen par tri :


    n | insertion (us) | fusion (us) | gagnant
   48 |           0,28 |        0,55 | insertion
   64 |           0,44 |        0,75 | insertion
   80 |           0,78 |        1,03 | insertion
   96 |           1,12 |        1,28 | insertion
  112 |           1,74 |        1,65 | fusion
  128 |           2,12 |        1,85 | fusion
  256 |           7,55 |        4,32 | fusion
  512 |          28,95 |       10,18 | fusion
 4096 |        1515,30 |       117,70 | fusion
16384 |       23733,69 |       621,68 | fusion

Le tri quadratique gagne jusque vers , et le point de bascule est net. Les ordres de grandeur ne sont pourtant pas démentis : de à , le temps du tri par insertion est multiplié par (on attendait pour un quadruplement de ), celui du tri par fusion par (on attendait ).

Ce que dit vraiment un . Écrire et , c'est affirmer l'existence de constantes telles que et . La comparaison équivaut à : elle est vraie pour les petits dès que . Or c'est le cas ici : le tri par insertion ne fait que comparer et décaler, sur des cases voisines en mémoire ; le tri par fusion appelle, alloue un tableau auxiliaire, et recopie.

La conclusion, et elle est double.

Le chapitre l'annonçait : « un battra un sur les petites entrées et perdra toujours sur les grandes ». Ici, la phrase est chiffrée.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.