Einzelnen Beitrag anzeigen

Bjoerk

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

AW: Quicksort Zugriffsverletzung bei Adresse XX in Modul

  Alt 22. Sep 2015, 07:52
NN ist 1000, High aber 10000. -> Quick_Sort(A, 1, NN)

Und, ob dein Quicksort so richtig ist, kann ich nicht sagen, ich verwende immer den analog TList:
Delphi-Quellcode:
procedure QuickSort(L, R: Integer; var Items: array of Integer);
var
  I, J, K, Pivot, Temp: Integer;
begin
  repeat
    I := L;
    J := R;
    K := (L + R) shr 1;
    Pivot := Items[K];
    repeat
      while Items[I] < Pivot do
        Inc(I);
      while Items[J] > Pivot do
        Dec(J);
      if I <= J then
      begin
        Temp := Items[I];
        Items[I] := Items[J];
        Items[J] := Temp;
        Inc(I);
        Dec(J);
      end;
    until I > J;
    if L < J then
      QuickSort(L, J, Items);
    L := I;
  until I >= R;
end;

procedure Sort(var Items: array of Integer; const L, R: Integer);
begin
  QuickSort(L, R, Items);
end;

Geändert von Bjoerk (22. Sep 2015 um 07:54 Uhr)
  Mit Zitat antworten Zitat