Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#29

Re: Wie logisch richtig sortieren: 1,2,3,21 (nicht 1,2,21,3)

  Alt 27. Dez 2005, 23:57
Es ist vollbracht.

mein Algo kann Ganze Zahlen in linearer Zeit sortieren.
Delphi-Quellcode:
procedure Sort(var A: TIntegerArray);
var Max,Min: Integer;
    H: TIntegerArray;
    i, j, k:Integer;
begin
  Max:=A[0];
  Min:=A[0];
  for i:=0 to Length(A)-1 do
    begin
    if Max<A[i] then Max:=A[i];
    if Min>A[i] then Min:=A[i];
    end;
  SetLength(H,Max-Min+1);
  for i:=0 to Length(H)-1 do H[i]:=0;
  for i:=0 to Length(A)-1 do Inc(H[A[i]-Min]);
  k:=0;
  for i:=0 to Length(H)-1 do
    for j:=1 to H[i] do
      begin
      A[k]:=i+Min;
      Inc(k);
      end;
end;
Mit anderen Typen als ganzen Zahlen...
Theoretisch ist es möglich.
Praktisch ein ziemlicher aufwand^^


im Nachhinein habe ich rausgefunden das dieser Algo im Prinzip dem CountingSort entspricht.
Quicksort ist tatsächlich der schnellste vergleichsbasierte algo.
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat