L'elemento i-esimo viene inserito al posto giusto nel sottovettore (1, ..., i-1) facendogli percorrere il tratto i-1, i-2, ... con una sequenza di confronti e assegnazioni.
Procedure INSERTSORT(var V: Vettore; N: Integer);
var
i, j: Integer;
X: Elemento;
begin
for i:=2 to N do
begin
X:=V[i];
j:=i-1;
while(j > 0) And (V[j] > X) do
begin
V[j+1]:=V[j];
j:=j-1;
end;
V[j+1]:=X;
end;
end;
Esempio
V={2, 3, 1, 0}, i=2, j=1, X=3 --> V={2, 3, 1, 0} V={2, 3, 1, 0}, i=3, j=2, X=1 --> V={2, 3, 3, 0}
--> V={2, 2, 3, 0}
--> V={1, 2, 3, 0} V={1, 2, 3, 0}, i=4, j=3, X=0 --> V={1, 2, 3, 3}
--> V={1, 2, 2, 3}
--> V={1, 1, 2, 3}
--> V={0, 1, 2, 3} |