Zum Testen ein
Array of ByteArray
nehmen, mit unsterschiedlichen und Kombinationen befüllen (alle Möglchen).
Und dann alle Testes immer auf die selben Daten loslassen.
dynamische Arrays kann man oftmals mit Copy (ohne) Längenangabe kopieren.
Wie sieht denn dein Testumfelt aktuell aus?
Entweder das Array mit Zufallszahlen befüllen (*1) oder einfach hintereinander unsotiert alle möglichen Kombinationen.
1: Natürlich beachten, daß 1 bis 4 jeweils nur einmal vorkommen.
So, jetzt hätte man ein vergleichbares Umfelt geschaffen.
Delphi-Quellcode:
procedure BubbleSort(var B: ByteArray);
var
T: Byte;
begin
With B do begin
if A[0] > A[1] then begin T:= A[0]; A[0]:= A[1]; A[1]:= T; end;
if A[1] > A[2] then begin T:= A[1]; A[1]:= A[2]; A[2]:= T; end;
if A[2] > A[3] then begin T:= A[2]; A[2]:= A[3]; A[3]:= T; end;
if A[0] > A[1] then begin T:= A[0]; A[0]:= A[1]; A[1]:= T; end;
if A[1] > A[2] then begin T:= A[1]; A[1]:= A[2]; A[2]:= T; end;
if A[2] > A[3] then begin T:= A[2]; A[2]:= A[3]; A[3]:= T; end;
if A[0] > A[1] then begin T:= A[0]; A[0]:= A[1]; A[1]:= T; end;
if A[1] > A[2] then begin T:= A[1]; A[1]:= A[2]; A[2]:= T; end;
if A[2] > A[3] then begin T:= A[2]; A[2]:= A[3]; A[3]:= T; end;
end;
end;
procedure NetworkSort(var B: ByteArray);
var
T: Byte;
begin
With B do begin
if A[0] > A[1] then begin T:= A[0]; A[0]:= A[1]; A[1]:= T; end;
if A[2] > A[3] then begin T:= A[2]; A[2]:= A[3]; A[3]:= T; end;
if A[0] > A[2] then begin T:= A[0]; A[0]:= A[2]; A[2]:= T; end;
if A[1] > A[3] then begin T:= A[1]; A[1]:= A[3]; A[3]:= T; end;
if A[1] > A[2] then begin T:= A[1]; A[1]:= A[2]; A[2]:= T; end;
end;
end;
procedure z;
var
X, Y: array of ByteArray;
i: Integer;
begin
//XXX befüllen
// einfach nur irgendwas machen, um dynamisch getacktete CPUs hochzufahren
X := Copy(XXX); // X := XXX; kann man vergessen, wegen eine echt blöden Laufzeitoptimeren seitens Borland/Codeegear/Embarcadero :wall:
for i := High(X) downto 0
NetworkSort(X[i]);
X := Copy(XXX);
// start merken
for i := High(X) downto 0
BubbleSort(X[i]);
// zeit berechnen
X := Copy(XXX);
// start merken
for i := High(X) downto 0
NetworkSort(X[i]);
// zeit berechnen
...
end;