Thema: Delphi Probleme beim sortieren

Einzelnen Beitrag anzeigen

Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#1

Probleme beim sortieren

  Alt 5. Mär 2006, 17:00
Hallo,

ich hab da ein kleines Problem mit dem SelectionSort-Algorithmus. Das Tut von Daniel hab ich mir durchgelesen.
Es geht darum, folgende kleine Liste (in TListBox) zu sortieren:
Code:
100 x 100 - 256 Farben
16 x 16 - 16 Farben
48 x 48 - 256 Farben
32 x 32 - 7 Farben
16 x 16 - 256 Farben
48 x 48 - 16 Farben
32 x 32 - 16 Farben
32 x 32 - 24 bpp
16 x 16 - 24 bpp
32 x 32 - 256 Farben
48 x 48 - 24 bpp
Die Einträge sollen primär nach Bildgröße und innerhalb gleicher Größe nach Farbtiefe sortiert werden.

Mein Algo sieht bisher so aus:
Delphi-Quellcode:
function SortList(List: TStrings): TStrings;
var
  i, j, min: Integer;
  Buffer : string;
begin
  for i := 0 to List.Count - 2 do
  begin
    min := 0;
    for j := i + 1 to List.Count - 1 do
      if StrToInt(copy(List[j], 0, Pos(' ', List[j]) - 1)) < StrToInt(copy(List[min], 0, Pos(' ', List[min]) - 1)) then min := j;
    Buffer := List[i];
    List[i] := List[min];
    List[min] := Buffer;
  end;
  Result := List;
end;
(Richtig, das mit der Farbtiefe hab ich noch nicht implementiert)

Aufgerufen wird er so:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var List: TStringList;
begin
  List := TStringList.Create;
  List.Assign(ListBox1.Items);
  Listbox1.Items.Assign(SortList(List));
end;
Der sortiert, aber nicht komplett:
  • Der Eintrag mit 100 x 100 ist IMMER ganz oben, unabhängig von der Ausgangsposition
  • Wenn ich mehrmals hintereinander auf die ListBox klicke wirds richtig komisch: Bei jedem zweiten Klick ist einer der 16 x 16-Einträge der letzte, bei den Klicks dazwischen tummeln sich alle 16 x 16 weiter oben auf einem Haufen.
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat