Section courante

A propos

Section administrative du site

La technique de tri nommée «Shell-Metzner», est en fait une technique de réduction du nombre de comparaison a effectuer pour trier un tableau. Comment si prend-on? C'est simple, la comparaison s'effectue entre 2 éléments séparé par un écart égal (au départ) à la moitié de la taille du tableau. Ensuite, la comparaison s'effectue entre des éléments séparées par un écart égal au nombre d'élément du tableau divisée par 4. Lorsque l'écart atteint finalement 1, la tri est terminé. Vous trouverez la réponse que vous souhaitez, à l'aide du code source QuickBASIC suivant :

  1. OPTION BASE 0
  2. DIM Tableau(7)
  3. Tableau(0) = 15
  4. Tableau(1) = 10
  5. Tableau(2) = 23
  6. Tableau(3) = 2
  7. Tableau(4) = 8
  8. Tableau(5) = 9
  9. Tableau(6) = 14
  10. Tableau(7) = 16
  11.  
  12. PRINT "Avant:";
  13. FOR K = 0 TO UBOUND(Tableau)
  14.  PRINT Tableau(K); ",";
  15. NEXT
  16.  
  17. Inversion = 0
  18. Ecart = UBOUND(Tableau) + 1
  19. DO
  20.   Ecart = INT(Ecart / 2)
  21.   DO
  22.    Inversion = 0
  23.    FOR I = 0 TO (UBOUND(Tableau) + 1) - Ecart - 1
  24.     J = I + Ecart
  25.     IF Tableau(J) < Tableau(I) THEN
  26.       SWAP Tableau(I), Tableau(J)
  27.       Inversion = 1
  28.     END IF
  29.    NEXT
  30.   LOOP UNTIL 1 <> Inversion
  31. LOOP UNTIL 1 = Ecart
  32.  
  33. PRINT
  34. PRINT "Après:";
  35. FOR L = 0 TO UBOUND(Tableau)
  36.  PRINT Tableau(L); ",";
  37. NEXT
  38. PRINT

on obtiendra le résultat suivant :

Avant:15, 10, 23, 2, 8, 9, 14, 16,
Après:2, 8, 9, 10, 14, 15, 16, 23,

Voir également

Algorithme - Tri

Dernière mise à jour : Mercredi, le 14 septembre 2016