![]() |
Probleme mit Mergesort
Hallo Leute,
ich habe mich mal an eine Mergesort-Implementierung gemacht, aber es kommt immer ein Stackoverflow!
Delphi-Quellcode:
procedure SortierenMisch(links,rechts:integer);
var mitte,j,i,k : integer; begin if links < rechts then begin mitte :=(links+rechts) div 2; // mitte ermitteln SortierenMisch(links,mitte); // rek. Aufruf (linke Liste) SortierenMisch(mitte+1,rechts); // rek. Aufruf (rechte Liste) Mischen(links,mitte,rechts); end; //of then end; //MischSort
Delphi-Quellcode:
Wo liegt das Problem?
var j,i,k,s,ir,l : Integer;
Begin j:=mitte+1; i:=links; k:=links; While (i<=mitte) and (j<=rechts) do Begin if (Mergefeld[i] <= Mergefeld[j]) then Begin hilfarray[k]:=Mergefeld[i]; inc(i); end else Begin hilfarray[k]:=Mergefeld[j]; inc(j); end; k:=k+1 end; if i>mitte then For s:=j to rechts do hilfarray[k]:=Mergefeld[s] else For ir:=i to mitte do hilfarray[k]:=Mergefeld[ir]; For l:=links to rechts do Mergefeld[l]:=hilfarray[l]; end; |
Re: Probleme mit Mergesort
Hi,
sorry, aber deine Art zu fragen wird (imho) nicht zu vielen Antworten führen. Du solltest schon etwas mehr eigene Energie investieren. Zum Mergesort findest du mit Sicherheit einiges in der DP und auch wenn es verständlich ist, dass du hier nicht die Probleme anderer durchgehen willst, benutz die Suche, die schränkt vieles ein. Wenn du aber möchtest, dass jmd. deinen Code durchgeht und dir deine Fehler raussucht, dann solltest du vorher etwas genauer sagen, was du versucht hast, wo der Fehler kommt, womit du getestet hast (kleine und große Arrays?) Vorallem solltest du aber damit anfangen, deinen Code etwas mehr zu strukturieren. Dann siehst du leichter welche Stellen was machen. Wenn du die Zählvariablen dann noch etwas schöner benennst und deinen Code kommentierst, dann wirst du sicherlich (währenddessen) vielleicht schon deinen möglichen Fehler finden. An sich (hab mir deinen Code nicht näher angeguckt), kann es bei sehr großen Feldern und Rekursion natürlich immer leicht zu einem Stackoverflow kommen Gruß Der Unwissende |
Re: Probleme mit Mergesort
Naja, momentan sind 5 Elemente in dem Array. Das kann also nicht zu einem Stackoverflow kommen!
Kommentieren kann ich das mal, das ist eine gute Idee. Ich habe schon mehrere Versuche zum Debuggen durchgeführt, aber es kam nie zum Erfolg! Ich bin momentan echt ahnungslos |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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