Ehm ich hab jetzt nochmal ein Quicksort geschrieben. Also ich glaube langsam da will mich was verarschen...
Hier nochmal als Beispiel: Ein Array of TList (bzw ein Nachfahre davon). Ich will das Array nach der Anzahl der Elemente in den Listen sortieren.
Delphi-Quellcode:
type
TCombis =
Array of Tlist;
procedure SortArray(
var CombiArray: TCombis; l,r: Integer);
function Divide(l,r: Integer): Integer;
procedure Exchange(s,t: Integer);
var tmp: TList;
begin
tmp := CombiArray[s];
CombiArray[s] := CombiArray[t];
CombiArray[t] := tmp;
end;
var i,j: Integer;
pivot: Integer;
begin
i := l-1;
j := r+1;
pivot := CombiArray[r].Count;
repeat
repeat
inc(i);
until CombiArray[i].Count >= pivot;
repeat
dec(j);
until CombiArray[j].Count <= pivot;
Exchange(i,j);
until i <= j;
Exchange(i,j);
Result := i;
end;
var m: Integer;
begin
if r > l
then
begin
m := Divide(l,r);
SortArray(CombiArray,l,m-1);
SortArray(CombiArray,m+1,r);
end;
end;
Da wird wieder nichts sortiert. Ich werd langsam verrückt -.-
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."