Da finde ich die Listen-Variante doch besser, weil bei dieser (#15) Variante hier der Computer vor allem bei den letzten Feldern überproportional lange braucht (wirkt sich zwar erst bei viel viel mehr Zahlen aus, aber egal). Ein weiterer Punkt, der für die Listenvariante spricht ist, dass das Sortieren per Quicksort geschieht (also wunderbar schnell) und das Auftreten eventueller Fehler im Quelltext ist viel unwahrscheinlicher. Außerdem kann man bei einer Liste auch genau bestimmen, welche Elemente man haben will und welche nicht.
Bernhard
ADD: Dann auch ein Snippet von mir:
Delphi-Quellcode:
type
TDasArray =
array[0..15]
of integer;
function Zufallsarray(): TDasArray;
function RandomSort(Item1, Item2: Pointer): Integer;
var
DummyArray:
array[0..1]
of Integer;
// Wird benötigt, da Delphi sonst nicht zurechtkommt (doppeldeutiger Funktionsaufruf)
begin
DummyArray := [-1, 1];
// Hoffe das geht so ;)
Result := RandomFrom(DummyArray);
end;
var
Liste: TList;
i: INteger;
begin
Liste := TList.Create;
try
try
// Füllen:
for i := 0
to 15
do
Liste.Add(Pointer(i+1));
// "Sortieren"
Liste.Sort(RandomSort);
// Jetzt noch das Array füllen
for i := 0
to 15
do
Result[i] := Integer(Liste[i]);
except
on E:
Exception do
begin
// Irgendwo ein Fehler passiert? - 0-Array zurückgeben
ZeroMemory(@Result, SizeOf(Result));
raise E;
// Exception nach oben weiter geben (benötigt??)
end;
end;
finally
// Ganz wichtig: Nachher aufräumen!
Liste.Free;
end;
end;
Das ist jetzt auch mit Speicherschutzblöcken hoffentlich 100% korrekt.