1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 0) debut proedure tri(var t:tab; n:entier; var pas : entier)
1) pas <-- pas div 3
2) pour i de pas + 1 a n faire
xx <-- t[i]
si t[i] < t[i-pas] alors
proc decaller(t,i-pas, pos)
t[pos] <-- xx
fin si
3) Si pas <> 1 alors
proc tri[/B](t,n,pas)
fin si
4) Fin procedure tri.
0) debut procedure decaller(var t:tab; y:entier; var pos)
1) pos <--y
2) repeter
t[pos+pas ] <-- t[pos]
pos <-- pos-pas
jusqu'a (pos < = 0 ) ou (t[pos] < = xx)
3) pos <-- pos + pas
4) Fin procedure decaller |