Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#85

AW: Doppel schnell aus Liste löschen.

  Alt 12. Dez 2014, 16:55
Ich weiß, ihr glaubt mir nicht, aber das hier funktioniert und ist zudem noch schneller: Das Ergebnis ist jedenfalls beim Testprojekt stets 'OK'. Aber ich scheine mir hier den Mund fusselig zu reden.
Auf jeden Fall ist das hier einfach Quark (tut mir leid)
No problem, bin für klare Ansagen zu haben. Weißt du warum es auch Quark ist? Weil der Quicksort die ganze Zeit falsch war. Es geht sogar so. Der Thread Titel müßte eigentlich lauten, Auf welche Ideen man so kommt, wenn man von falschen Voraussetzungen ausgeht?
Delphi-Quellcode:
function SortCompareXY(const A, B: TFloatPoint): integer;
begin
  Result := SortCompareX(A, B);
  if Result = 0 then
    Result := SortCompareY(A, B);
end;

procedure TFloatPoints.RemoveDoubles2;
var
  I, J: integer;
  P: TFloatPoint;
begin
  QuickSort(0, FCount - 1, SortCompareXY);
  J := 0;
  P := FItems[J];
  for I := 1 to FCount - 1 do
    if not SameFloatPoint(FItems[I], P) then
    begin
      Inc(J);
      FItems[J] := FItems[I];
      P := FItems[J];
    end;
  FCount := J + 1;
end;
  Mit Zitat antworten Zitat