Hab ein kleines Problem, hoffe es ist klein.
Ich will mein Array (=Liste) nach Ankunft sortieren.
Dieses Array besteht aus Records (=TBusEintrag) mit Linie, Ziel, Ankunft, Abfahrt, Zeit.
Nun soll nach der Ankunftszeit sortiert werden. Ich benutze dafür Quicksort.
Dies klappt auch, doch leider wird dann nur der Teil "Ankunft" sortiert und die anderen Sachen bleiben so stehen im Record. Ich möchte aber das ganze Record nach der Ankunft sortieren. Hoffe ihr versteht was ich meine. Hier mein Code von Quicksort und WerteTauschen:
Code:
procedure TForm1.WertTauschen(var Liste : Array of PBusEintrag; StelleA, StelleB: Integer);
var tempI: TTime;
begin
tempI := Liste[StelleA].Ankunft;
Liste[StelleA].Ankunft := Liste[StelleB].Ankunft;
Liste[StelleB].Ankunft := tempI;
end;
Code:
procedure TForm1.Quicksort(var Liste : Array of PBusEintrag; erstes,letztes:integer);
var
vonLinks, vonRechts, mitte:integer;
vergleichsElement: TTime;
begin
if erstes < letztes then begin
mitte := (erstes + letztes) div 2;
vergleichsElement := Liste[mitte].Ankunft;
vonLinks := erstes;
vonRechts := letztes;
while vonLinks <= vonRechts do begin {noch nicht fertig zerlegt?}
while Liste[vonLinks].Ankunft < vergleichsElement do {linkes Element suchen}
vonLinks := vonLinks + 1;
while Liste[vonRechts].Ankunft > vergleichsElement do {rechtes Element suchen}
vonRechts := vonRechts - 1;
if vonLinks <= vonRechts then begin
WertTauschen(Liste, vonLinks, vonRechts); {Elemente tauschen}
vonLinks := vonLinks + 1;
vonRechts := vonRechts - 1;
end;
end;
Quicksort(Liste, erstes, vonRechts); {li. und re. Teilfeld zerlegen}
Quicksort(Liste, vonLinks, letztes);
end;
end;
Hoffe die Teile vom Code reichen, sonst einfach Nachfragen