![]() |
Hilfe zum programmieren von mergesort mit delphi
bei diesem verfahren geht man davon aus, dass ein teilfeld ( das auch aus dem ersten element bestehen darf) geordnet vorliegt. das nächste feldelement wir ddann an der richtigen stelle eingefügt. dieses verfahren wird so lange wiederholt, bis alle elemente eingefügt sind.
könnt ihr mir da helfen? so richtig versteh ich die frage nämlich nicht, das erste feldelement muss schon geordnet sein und das zweite feldelement wird dann jeweils an der richtigen stelle eingeordnet? lg kleinewolke 7 |
Re: Hilfe zum programmieren von mergesort mit delphi
Ein einzelnes Element ist immer sortiert, sogar aufsteigend und absteigend.
Es geht dann nur noch darum sortiert einzufügen. Also zu schauen, ob das neue Element, das man hat an die richtige Stelle eingefügt werden muss. Sherlock |
Re: Hilfe zum programmieren von mergesort mit delphi
danke für den lösungsansatz,aber ich komme immer noch nicht weiter!
|
Re: Hilfe zum programmieren von mergesort mit delphi
Hallo,
hilft Dir hier eventuell ![]() Oder hier in der ![]() Eventuell ist auch eine ![]() |
Re: Hilfe zum programmieren von mergesort mit delphi
hilft mir schon weiter. aber so richtig funktioniert das programm leider nicht :(
und ich weiß nicht, wo mein fehler liegt |
Re: Hilfe zum programmieren von mergesort mit delphi
.. dann zeige mal das was Du bisher gemacht hast.
Grüße Klaus |
Re: Hilfe zum programmieren von mergesort mit delphi
Delphi-Quellcode:
[edit=Sharky]Delphi-Tags eingefügt. Mfg, Sharky[/edit]
implementation
{$R *.dfm} const n=10; type tab=array[1..n] of integer; var t:tab; type data=array[1..n] of integer; var d:data; procedure TForm1.Button1Click(Sender: TObject); 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 t[i]:= D[i]; i:= l; For j:= m+1 To r Do t[r+m+1-j]:= D[j]; j:= r; For k:= l To r Do Begin If (t[i] < t[j]) Then Begin D[k]:= t[i]; inc( i ) ; end Else Begin D[k]:= t[j]; dec( j ); end; for i:=1 to n do listbox1.Items.add(inttostr(t[i])); end; (*hier kommt ein fehler, und ich weiß nicht,wie ich das beheben kann*) end; end; end. |
Re: Hilfe zum programmieren von mergesort mit delphi
Delphi-Quellcode:
Die Prozedur mergeSort ist keine Methode
const n=10;
type tab=array[1..n] of integer; var t:tab; type data=array[1..n] of integer; var d:data; procedure TForm1.Button1Click(Sender: TObject); 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 t[i]:= D[i]; i:= l; For j:= m+1 To r Do t[r+m+1-j]:= D[j]; j:= r; For k:= l To r Do Begin If (t[i] < t[j]) Then Begin D[k]:= t[i]; inc( i ) ; end Else Begin D[k]:= t[j]; dec( j ); end; for i:=1 to n do listbox1.Items.add(inttostr(t[i])); end; (*hier kommt ein fehler, und ich weiß nicht,wie ich das beheben kann*) end; end; end. Deiner Klasse TForm, daher kennt die Prozedur die lustbix nicht. Grüße Klaus |
Re: Hilfe zum programmieren von mergesort mit delphi
mhm... jetzt habe ich die prozedur extra gemacht, jetzt zeigt es mir aber einen anderen fehler an, der vorher nie aufgefallen war :(
|
Re: Hilfe zum programmieren von mergesort mit delphi
Zitat:
Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz