sorry wenn ich mit meinen Sortierverfahren nerve. Ich habe jetzt eine Prozedur für das Verfahren
Shellsort geschrieben, in der Insertionsort aufgerufen wird.
Code: Alles auswählen
procedure shellsort (feld : tstrings);
var
h, indfeld, indhilfs, n : integer;
hilfsfeld : tstrings;
begin
h:=1;
n:=feld.Count-1;
while h<n do
begin
h:= 3*h + 1;
end;
while h>1 do
begin
indfeld:=0;
repeat
hilfsfeld.Add(feld[indfeld]);
indfeld:=indfeld+h;
until indfeld>n;
insertionsort(hilfsfeld);
for indhilfs:=hilfsfeld.Count-1 to 0 do
begin
feld.Delete(indfeld);
feld.Insert(indfeld, hilfsfeld[indhilfs]);
indfeld:=indfeld-h;
end;
h:=(h-1) div 3
end;
insertionsort(feld);
end;
Warum?
mit freundichen Grüßen