Thema: InsertSort

Einzelnen Beitrag anzeigen

busybyte

Registriert seit: 15. Sep 2006
165 Beiträge
 
#3

AW: InsertSort

  Alt 17. Mai 2012, 19:01
Auf Arrays würde ich ganz verzichten und Pointer nehmen und
Arbeite dann mit TList und lass diese Liste sortieren, das geht wesentlich schneller.

http://www.delphipraxis.net/147610-d...schreiben.html


Delphi-Quellcode:
Type PMeinTyp=^TMeinTyp;
TMeinTyp=Record
i1:integer;
s1:String;
//usw.
End;



procedure ShowData(aList:Tlist);
Var cnt1:integer;
begin
if not Assigned(aList) then
 exit;

with Form1.ListBox1 do
begin
 try
 items.BeginUpdate;
 Clear;

   for cnt1:=0 to aList.Count-1 do
    with PMeinTyp(aList[cnt1])^ do
     Items.Add(inttostr(i1)+','+s1);
 finally
 items.EndUpdate;
 end;
end;
end;

Procedure AddMeinTyp(Var aList:TList;X:integer;irgendwas:String);
Var
Tmp:PMeinTyp;
begin
  try
   if not Assigned(aList) then
    aList:=TList.Create;
  Tmp:=New(PMeinTyp);
  Tmp.i1:=X;
  Tmp.s1:=irgendwas;
  aList.Add(Tmp);
  except
  FreeandNil(aList);
  end;
end;

function MySortInteger(Item1, Item2: Pointer): Integer;
begin
  Result := Integer(Item1^) - Integer(Item2^);
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
i,cnt1:integer;
S:String;
DieListe:TList;
begin
 try
  Randomize;

   for cnt1 := 0 to 10000 do
    begin
    i:=random(cnt1);
    AddMeinTyp(DieListe,i,' irgendwas '+inttostr(i));
    end;
  ShowData(DieListe);

  showMessage('Sortieren');
  DieListe.Sort(@MySortInteger);
  ShowData(DieListe);
  showMessage('Fertig');
 
 finally
  if Assigned(DieListe) then
   FreeandNil(DieListe);
 end;
end;
I love DiscCat

Geändert von busybyte (17. Mai 2012 um 19:51 Uhr)
  Mit Zitat antworten Zitat