Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MergeSort richtig implementieren (https://www.delphipraxis.net/29715-mergesort-richtig-implementieren.html)

0815 13. Sep 2004 18:20


MergeSort richtig implementieren
 
Hallo!

Ich versuche schon ewig den MergeSort in einem Programm von mir zu benutzen. Aber irgendetwas habe ich scheinbar immer falsch gemacht. Ich möchte im Prinzip nur einen Array mit dem MergeSort sortieren. Hier ein Teil aus meinem Quellcode (den ich auf der DP-Seite gefunden habe):

Delphi-Quellcode:
var
  Form1: TForm1;
  Arr : array of integer;
  HilfsArray: array of integer;

implementation

{$R *.dfm}

Procedure MergeSort( l, r : Integer );
var i, j, k, m : Integer;
Begin
  If (l < r) Then
  Begin
    m:= (r+l) div 2;

    MergeSort( l, m );
    MergeSort( m+1, r );

    For i:= l To m Do HilfsArray[i]:= Data[i];
    i:= l;

    For j:= m+1 To r Do HilfsArray[r+m+1-j]:= Data[j];
    j:= r;

    For k:= l To r Do
    Begin
      If (HilfsArray[i] < HilfsArray[j]) Then
      Begin
        Data[k]:= HilfsArray[i];
        inc( i );
      End
      Else
      Begin
        Data[k]:= HilfsArray[j];
        dec( j );
      End;
    End;
  End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
MergeSort(0,5)
end;
Danke für eure Hilfe!

Luckie 13. Sep 2004 19:18

Re: MergeSort richtig implementieren
 
Bei den Tutorials dürftest du fündig werden, da gibt es ein Tutorial über Sortieralgorithmen. Deweiteren führt bestiimt auch eine Suche mit Google Bei Google suchendelphi merge sort zum Ziel.

drav 9. Jan 2005 12:50

Re: MergeSort richtig implementieren
 
der gepastete quellcode von ihm stammt ja aus dem tutorial @luckie!

bei mir funktioniert der code, wenn ich ihn implentiere, auch nicht. könnte evtl. jemand erklären wie der zu implementieren ist? und wieso werden in der prozedur zwei integer-zahlen angegeben (anfangs) - eigentlich müsste da doch ein array angegeben werden, oder nich?

mergesort funktioniert doch so: ein array wird in 2 teile gesplittet, die zwei teile werden sortiert, anschließend zusammengefügt und nochmals sortiert. oder irre ich da?

bitte um hilfe, schreibe donnerstag eine klausur über das thema und wir haben bisher kein einziges mal eine funktionierende anwendung dazu programmiert :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz