Tri faire-valoir

Un article de Wikipédia, l'encyclopédie libre.
Tri faire-valoir
Visualisation du tri faire-valoir (qui ne montre que les échanges).
Problème lié
Structure des données
Complexité en temps
Pire cas
Voir et modifier les données sur Wikidata
Complexité en espace
Pire cas
Voir et modifier les données sur Wikidata

En informatique, le tri faire-valoir est un algorithme de tri récursif. Il est appelé stooge sort en anglais, nom inspiré des Trois Stooges[1]. Il est présenté en exercice dans le livre Introduction à l'algorithmique de Cormen, Leiserson, Rivest et Stein [2].

Principe[modifier | modifier le code]

Le principe du tri faire-valoir est le suivant :

  1. On échange le premier et le dernier élément du tableau à trier s'ils ne sont pas dans le bon ordre.
  2. Si le tableau contient plus de trois éléments :
    • on trie le premier 2/3 du tableau ;
    • on trie le dernier 2/3 du tableau ;
    • on retrie le premier 2/3 du tableau à nouveau.

Sa complexité temporelle est O(nlog 3 / log 1,5 ) = O(n2,7095...)[1], ainsi cet algorithme est particulièrement inefficace en comparaison avec le tri rapide ou le tri à bulles.

Implémentation[modifier | modifier le code]

 function stoogesort(A, i, j)
     if A[i] > A[j] then
         échanger A[i] et A[j]
     if (j - i + 1) > 2 then
         t = (j - i + 1) / 3
         stoogesort(A, i  , j-t)
         stoogesort(A, i+t, j  )
         stoogesort(A, i  , j-t)
     return A

Notes et références[modifier | modifier le code]