ich soll für ein Projekt Sortierverfahren vergleichen und hab mit Selectionsort angefangen.
Dabei soll das Programm die Zeilen von Memo1 sortieren und in Memo2 ausgeben.
Folgendes Problem: Das Programm gibt die Liste richtig sortiert in Memo2 aus, hängt aber noch eine Zeile dran. Also die
erste Zeile ist leer, dann folgt die sortierte Liste.
Code: Alles auswählen
function indmax (var n:integer; var feld : tstrings) : integer;
var
ind, i : integer;
begin
ind:=0;
for i:=0 to n do
begin
if feld[i]>feld[ind] then
ind := i;
end;
result := ind;
end;
procedure selectionsort(moin: tstrings);
var
n : integer;
begin
n:=moin.Count;
repeat
begin
moin.Exchange(indmax(n, moin), n);
n:=n-1;
end;
until (n>0)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo2.lines.Clear;
memo2.Lines.AddStrings(memo1.lines);
selectionsort(memo2.lines);
showmessage ('Größe Memo2 = ' + inttostr(memo2.Lines.Count));
end;
Mit freundlichen Grüßen