Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#9

AW: Spaltengenau sortieren

  Alt 11. Jan 2015, 17:05
BTW Ist die Angabe der Reihenfolge 54812673 bewusst falsch, oder nur vertippt?
Ja. Sorry.

Code:
NOTEBOOK
45821673

Habe ich da was nicht richtig verstanden?

Delphi-Quellcode:
NOTEBOOK
12345678

54812673
BEKNOOOT
Alternativer Code (der Sinn des Parameters S erschließt sich mir nicht ganz):

Delphi-Quellcode:
procedure SortByKey(const Key: string; Dest: TIntegerList);
var
  Ch: Char;
  I: Integer;
  LastKey: Char;
  MinKey: Char;
  MinPos: Integer;
begin
  Dest.Clear;
  LastKey := #0;
  while Dest.Count < Length(Key) do begin
    { suche kleinsten, der größer als LastKey ist, und speichere in MinKey. }
    MinPos := 0;
    for I := 1 to Length(Key) do begin
      Ch := Key[I];
      if (Ch > LastKey) and ((MinPos = 0) or (Ch < MinKey)) then begin
        MinKey := Ch;
        MinPos := I;
      end;
    end;
    { Position anfügen }
    Dest.Add(MinPos);
    { das wird unser neuer LastKey }
    LastKey := MinKey;
    { alle folgenden Positionen anfügen, die gleich LastKey sind }
    for I := MinPos + 1 to Length(Key) do begin
      if Key[I] = LastKey then begin
        Dest.Add(I);
      end;
    end;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat