Tri faire-valoir

Tri faire-valoir
Visualisation du tri faire-valoir (qui ne montre que les échanges).
Problème lié
Algorithme de triVoir et modifier les données sur Wikidata
Structure des données
TableauVoir et modifier les données sur Wikidata
Complexité en temps
Pire cas
O ( n l o g 3 / l o g 1.5 ) {\displaystyle O(n^{log{3}/log{1.5}})} Voir et modifier les données sur Wikidata
Complexité en espace
Pire cas
O ( n ) {\displaystyle O(n)} Voir et modifier les données sur Wikidata

modifier - modifier le code - modifier WikidataDocumentation du modèle

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

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

  1. a et b https://courses.cs.washington.edu/courses/cse373/13wi/lectures/02-22/18-sorting1-bogo-stooge-bubble.pdf
  2. (en) Thomas H. Cormen, Charles E. Leiserson et Ronald L. Rivest, Introduction à l'algorithmique, Paris, Dunod, , xxix+1146 (ISBN 978-2-10-003922-7, SUDOC 068254024), chap. 7 (« Tri rapide »)
v · m
Tris par comparaisons
Sans hypothèse autre
Complexité moyenne O ( n log n ) {\displaystyle {\mathcal {O}}(n\log n)}
Complexité moyenne O ( n 2 ) {\displaystyle {\mathcal {O}}(n^{2})}
Complexité moyenne moins bonne que O ( n 2 ) {\displaystyle {\mathcal {O}}(n^{2})}
Avec hypothèse supplémentaire
Réseau de tri
Tri utilisant d'autres opérations
Applications
  • icône décorative Portail de l'informatique théorique