Thema: Delphi Array sortieren

Einzelnen Beitrag anzeigen

Nelphin

Registriert seit: 2. Feb 2009
Ort: Kaiserslautern
71 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Array sortieren

  Alt 23. Jan 2010, 23:03
Danke für die Antwort.

Ich habe jetzt herumgebastelt und das hier kam dabei heraus:
Delphi-Quellcode:
TSortEdgeArray = class(TSortBaseClass)
   protected
      function Compare(Index1, Index2: Integer): Integer; override;
      procedure Exchange(Index1, Index2: Integer);override;
   public
      EdgeArray : PEdgeArray;
end;
 TEdgeArray = array of TEdge;
 PEdgeArray = ^TEdgeArray;
 var Edgelist: TEdgeArray;

und die funktionen compare und exchange habe ich wie folgt abgeändert:

Delphi-Quellcode:
function TSortEdgeArray.Compare(Index1, Index2: Integer): Integer;
begin
   if EdgeList[Index1].KX > EdgeList[Index2].KX then // erstmal nur die KX'e im Array
      Result := 1
   else if EdgeList[Index1].KX < EdgeList[Index2].KX then //s.o.
      Result := -1
   else
      Result := 0;
end;
und
Delphi-Quellcode:
procedure TSortEdgeArray.Exchange(Index1, Index2: Integer);
var
   t : TEdge;
begin
   t := EdgeList[Index1];
   EdgeList[Index1] := EdgeList[Index2];
   EdgeList[Index2] := t;
end;
Das habe ich jetzt auch irgendwie zum laufen bekommen...
Aber die Sortierung ist nicht 100% korrekt, sie wird jedesmal besser wenn man sie mehrmals durchführt aber ich kann nicht erkennen wieviele Durchläufe notwendig sind, bis 100% genauigkeit erzielt wurden.

Ist das eine Eigenart des Quicksort oder habe ich einen anderen Fehler?
  Mit Zitat antworten Zitat