Hi,
@marabu ich habe ja bereits überall Length(Runs)-1 und das ganze so angepasst wie im Post von Daniel mit der TListBox. Von daher müsste es so funktionieren. Wenn ich das nicht berücksichtigt hätte, wäre im übrigen der erste Datensatz der, der nicht mitsortiert würde.
Hab das Problem jetzt behoben:
Delphi-Quellcode:
Procedure TForm1.ShellSort();
var i, j, h : Integer;
v: Trun;
Begin
h:= 1;
Repeat
h:= (3 * h) +1;
Until (h > Length(Runs));
Repeat
h:= (h
div 3);
For i:= (h+1)
To Length(Runs)
Do
Begin
v:= Runs[i-1];
j:= i;
While ((j > h)
and (Runs[j-h-1].sumtime > v.sumtime))
Do
Begin
Runs[j-1]:= Runs[j-h-1];
dec(j,h);
End;
Runs[j-1]:=v;
End;
Until (h = 1);
End;
So funktioniert es wunderbar.
Gruß Lee500