Moin,
Interessant wäre auch, wie du sortiert hast. Weil BubbleSort sagt ja nur wie man etwas sortiert, aber nicht genau wie man den Code schreibt. Und nach was willst du sortieren? Erstes Datum? Zweites Datum? Differenz?
Und dann ist die Vergleichsoperation wichtig. In der Regel (um sowas dynamisch zu gestalten) wird eine Methode genommen die beide Werte bekommt und -1, 0 oder +1 zurückgibt (so ähnlich wie
CompareString) und damit sagt, welcher von beiden ist größer.
Ich würde also einfach den Pseudocode aus der Wikipedia nehmen und nach Delphi übersetzen:
Delphi-Quellcode:
function bubbleSort( A : array of <Datentyp> ) : array of <Datentyp>;
begin
n := Length(A);
repeat
swaped := false;
for i := 0 to n - 2 do
begin
if Compare(A[ i ], A[ i + 1 ]) > 0 then
begin
// A[i] und A[i + 1] vertauschen
swaped := true;
end
end
n := n - 1
until (n < 1) or (not swaped);
end;
Du musst jetzt nur noch die Elemente A[i] und A[i + 1] vertauschen. Ich bin mir nicht sicher ob ein Array als Referenz übergeben wird, also man kein Rückgabewert braucht. Außerdem musst du noch eine Compare-Funktion schreiben (s.o.) die halt einen Wert größer 0 (i.d.R. wird +1 genommen) zurückgibt, wenn das erste Element größer ist als das zweite.
MfG
Fabian