Der Code war nur so als Ansatz gedacht. Die Idee dahinter ist die vom Selectionsort, da kannst du was in den Tutorials drüber nachlesen. Ich habe ihn selbst nicht getestet.
Ich glaube aber, dass ich einen wichtigen Fehler gesehen habe.
Es sollte so etwas besser gehen:
Delphi-Quellcode:
Function SageMirDenTyp(var list: tDynIntegerArray): tdynintegerArray;
var
cnt,i,j,max,wo: integer;
begin
cnt:= length(list);
setlength(result,cnt);
for i:= 0 to cnt-1 do
begin
max:= list[0];
wo:=0;
for j:= 1 to cnt-1 do
begin
if list[j] > max then
begin
max:= list[j];
wo:=j;
// list[j]:=0; Eindeutig an der falschen Stelle
end;
end;
result[i]:=wo;
list[wo]:=0; // Jetzt erst ist sicher, dass dieser Wert nicht mehr benötigt wird.
end;
Natürlich besteht die übergebene List nachher nur noch aus Nullen, wenn dir das nicht gefällt, musst du noch eine Kopie erstellen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.