Aller au contenu

Discussion:Tri de Shell

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikipédia, l'encyclopédie libre.
Autres discussions [liste]
  • Admissibilité
  • Neutralité
  • Droit d'auteur
  • Article de qualité
  • Bon article
  • Lumière sur
  • À faire
  • Archives
  • Commons

Complexité minimale[modifier le code]

La complexité minimale semble être Source sur wikipédia anglais Theo77186 (discuter) 29 juillet 2014 à 21:24 (CEST)[répondre]

Voilà, j'ai rajouté l'info et la sources. --Roll-Morton (discuter) 1 août 2014 à 13:52 (CEST)[répondre]

Le pseudo code est faux[modifier le code]

Il faut 4 boucles imbriquées:

  • boucle sur les gaps
  • boucle sur le modulo m du gap (offset)
  • boucle sur les entiers de la forme k * gap + m
  • boucle en arrière pour faire l'insertion.

Cf la version anglaise.

Avec un pseudo code en python (ou autre) que l'on peut tester, cela serait mieux ?

Voici un code correct en python:

   gaps = [701, 301, 132, 57, 23, 10, 4, 1]
   def shell_sort(tab):
       n = len(tab)
       for m in gaps:
           for r in range(m):
               # tri par insertion des positions de la forme k * m + r
               for i in range (r + m, n, m):
                   j = i
                   x = t[i]
                   while j > r and t[j-m] > x:
                       t[j] = t[j-m]
                       j = j - m
                   t[j] = x

J'ai corrigé la page.