Tri faire-valoir

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].

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
Complexité en espace
Pire cas

Principe

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

 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

  • Portail de l'informatique théorique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.