Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ShellSort Problem - Array mit 2 Elementen

  Alt 23. Apr 2009, 14:38
Ich habe jetzt 2 Versuche gestartet der erste schlägt mit einer Zugriffsverletztung fehl.

Delphi-Quellcode:
//Dateien sortieren
  countTo := Length(Files); //Änderung
  k := countTo div 2;

  while (k > 0) do begin
    for i := 0 To countTo - k do begin
      j := i;

      while (j >= 0) and (Files[j].SortStr < Files[j+k].SortStr) do begin
        //Elemente austauschen
        exchg := Files[j];
        Files[j] := Files[j+k];
        Files[j+k] := exchg;
        if j > k then Dec(j,k) else j := 0;

      end;{while} 

    end;{for} 
    k := k div 2;
  end;{while}
Die zweite Änderung bezieht sich auf deinen Vorschlag, dies scheint soweit zu klappen.
Delphi-Quellcode:
//Dateien sortieren
  countTo := High(Files);
  k := Length(Files) div 2; //Änderung, das gleiche wie High(Files) - Low(Files) + 1

  while (k > 0) do begin
    for i := 0 To countTo - k do begin
      j := i;

      while (j >= 0) and (Files[j].SortStr < Files[j+k].SortStr) do begin
        //Elemente austauschen
        exchg := Files[j];
        Files[j] := Files[j+k];
        Files[j+k] := exchg;
        if j > k then Dec(j,k) else j := 0;

      end;{while} 

    end;{for} 
    k := k div 2;
  end;{while}
  Mit Zitat antworten Zitat