Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#28

AW: edits sortier darstellen?

  Alt 2. Jul 2013, 09:55
Ob das ein TStringGrid, eine TListbox oder TSchießMichTot ist, spielt doch für die Logik gar keine Rolle. Erweitern wir meinen Code von gestern mal dahingehend, dass die Zahlen in der gewünschten Reihenfolge in ein weiteres Array geschrieben werden (den Tippfehler habe ich übrigens mittlerweile korrigiert):
Delphi-Quellcode:
type
  TIntArray = array[1..10] of integer;

procedure MinimumFirst(const Src: TIntArray; out Dest: TIntArray);
var
  (* Variable für die kleinste Zahl im Array *)
  Minimum: integer;
  (* Variable für den Index der kleinsten Zahl innerhalb des Array *)
  IndexOfMinimum: integer;
  (* Laufvariable für die Schleife *)
  i: integer;
  (* aktueller Index im Zielarray *)
  DestIndex: integer;
begin
  (* Initial setzen wir Minimum sowie dessen Index auf das erste Element im Array *)
  Minimum := Src[Low(Src)];
  IndexOfMinimum := Low(Src);
  (* Nun den Rest des Array durchgehen, vergleichen und Variablen ggf. anpassen *)
  for i := Low(Src) + 1 to High(Src) do
    if Src[i] < Minimum then
      begin
        Minimum := Src[i];
        IndexOfMinimum := i;
      end;
  DestIndex := Low(Dest);
  (* Nun in das Ausgabe-Array schreiben *)
  (* Zuerst ab der kleinsten Zahl bis zum Ende *)
  for i := IndexOfMinimum to High(Src) do
    begin
      Dest[DestIndex] := Src[i];
      inc(DestIndex);
    end;
  (* Nun noch die ggf. verbliebenen *)
  for i := Low(Src) to IndexOfMinimum - 1 do
    begin
      Dest[DestIndex] := Src[i];
      inc(DestIndex);
    end;
end;
Ein kurzer Test mit einer Listbox, damit man auch etwas sieht:
Delphi-Quellcode:
procedure TFormTest.FormCreate(Sender: TObject);
const
  Input: TIntArray = (5, 34, 23, 12, 8, 3, 42, 1, 98, 3);
var
  Output: TIntArray;
  i: integer;
begin
  MinimumFirst(Input, Output);
  for i := Low(Output) to High(Output) do
    ListBox1.Items.Add(IntToStr(Output[i]));
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat