Shell Sort?

Silenia Tyrvenis

Grünschnabel
Hallöchen!
Also ich habe hier einen Quelltext bekommen zum Thema Shell Sort und soll beschreiben was in welcher Zeile passiert:
Code:
procedure ShellSort
var Abstand, i, j, Merke : Integer;
     Done: Boolean
begin
  Abstand :=n;
  while (Abstand >1) do
    begin
      Abstand := Abstand div2;
      repeat
        Done :=True;
        for j:= 1 to n- Abstand do
          begin
            i:= j+Abstand;
            if (Zahl[j] >Zahl[i]) then
              begin
                Merke:= Zahl [j];
                Zahl[j]:= Zazhl[i];
                Zahl[i]:= Merke;
                Done:= False
               end;
            end;
        until Done;
    end;
end;

So also, ich weiß nicht warum Done gleich True gesetzt wird und am ende wieder false und warum da ganz zum schluß until Done steht.
Außerdem weiß ich nicht wie ich den Abstand zu definieren habe.
Falls mir wer helfen kann wäre ich sehr dankbar! Ich bin nämlich so langsam am verzweifeln.
 
HI

also dass mit dem anfangs auf True setzen und später (evtl) wieder auf false ist generell so gemeint:

1. Gehe davon aus, dass alles ok ist. Done := true.
2. Wenn dem aus irgendeinem Grund nicht so ist (wie in deiner IF-Bedingung), dann
überschreibt man Done mit false, weil eben nicht alles so ok ist.

Diese Art der Zuweisung von booleans ermöglicht Dir auf mehrere verschiedene Weisen festzuhalten, dass eben nicht alles ok (Done) ist, ohne tief im Programm verschachteln zu müssen. Etwa so:

1. Alles ist OK
2. Wenn es regnet ist nicht alles Ok
3. Wenn es schneit ist nicht alles Ok
4. Wenn es hagelt ist nicht alles ok
Wenn alles ok ist mache ich ein Picknick.

Ich könnte stattdessen auch verschachteln:
Wenn es nicht regnet
und wenn es nicht schneit
und wenn es nicht hagelt
dann mache ich ein Picknick

Alles verstanden = true?

vop
 
Ja, also herzlichen Dank!
Ich habe das jetzt verstanden, das war gut erklärt *freu*
Also jetzt sind endlich alle Unklerheiten beseitigt! :)
 

Neue Beiträge

Zurück