Danke für die netten Hilfen;
meine sortierungsklasse ist nun so aufgebaut worden.
Delphi-Quellcode:
unit sortieren;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls, hauefigkeit_zaehlen;
Type
TForm3 =
class
procedure sortieren(a_zaehlen:
array of integer; st_list2: TStringlist);
end;
var
s_ausgabe:
string;
implementation
procedure TForm3.sortieren(a_zaehlen:
Array of integer; st_list2: TStringlist);
var
i: integer;
x: integer;
a: integer;
i_hwert: integer;
st_list3: TStringlist;
i_hidx: integer;
b_abbruch: boolean;
st_list4: TStringlist;
begin
// Listen erzeugen, wo ergibnisse abgespeichert werden
st_list4 := TStringlist.Create;
st_list3 := TStringlist.Create;
// nach dem hösten wert im arra a_zaehlen suchen
for x := 0
to length(a_zaehlen)
do
begin
i_hidx := 0;
i_hwert := 0;
for a := 0
to length(a_zaehlen) - 1
do
begin
if i_hwert < a_zaehlen[a]
then
begin
i_hwert := a_zaehlen[a];
i_hidx := a;
end;
end;
// Hösten wert + dazugehörige wort in listen übergeben
st_list3.add(st_list2[i_hidx]);
st_list4.add(inttostr(i_hwert));
a_zaehlen[i_hidx] := 0;
// momentan höhsten wert zurücksetzen
end;
// ausgabe für memofeld
for i := 0
to st_list2.Count - 1
do
begin
s_ausgabe := s_ausgabe + #10#13 + '
Ihr Wort : "' + st_list3[i] + '
" kam ' +
st_list4[i] + '
mal vor.' + slinebreak;
end;
st_list3.free;
end;
end.
Ich weiß, ist nicht der schnellste Algorithmus, aber für das kleine Programm reicht das vollkommen aus.