Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Sortiern nach Datum (strings)

  Alt 13. Jun 2010, 10:30
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 Delphi-Referenz durchsuchenCompareString) 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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler

Geändert von xZise (13. Jun 2010 um 17:38 Uhr) Grund: Fixed source: OffByOneError und negierte Wahrheiten.
  Mit Zitat antworten Zitat