salut les programmeurs ;
J'ai un petit problème concernant le tri Shell ;
voilà tout dabord son code :
et le problème se trouve au niveau de décalage ; c'est à dire au niveau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 procedure trishell (var t:tab; n:integer ) ; var p,i,j,v: integer; begin p:=0; while p<= n do p:= 3*p+1; while p <> 0 do begin p:=p div 3; for i:= p to n do begin v:=t[i]; j:=i; while (j > p-1) and (t[j-p] > v ) do begin t[j]:=t[j-p]; j:=j-p; end; t[j]:=v; end; end; end;
cette instruction va nous amener à l'indice zéro (t[0] ) !!!! c'est mon problème ? est alors ! y-a-t-il une solution ?while (j > p-1) and (t[j-p] > v ) do
une remarque tres importante : si ma remarque concernant cette boucle est dans sa place, alors les livres scolaires (4 ieme SI) est aussi mal rédiger
car ils comportes tous cette solution ?
MErci d'avance
Partager