AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Mergesort

Ein Thema von whiteshark · begonnen am 9. Mär 2006 · letzter Beitrag vom 9. Mär 2006
Antwort Antwort
Benutzerbild von whiteshark
whiteshark

Registriert seit: 4. Dez 2003
Ort: Cottbus
222 Beiträge
 
Delphi 2005 Personal
 
#1

Probleme mit Mergesort

  Alt 9. Mär 2006, 20:12
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:
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;
Wo liegt das Problem?
Men are born ignorant, not stupid; they are made stupid by education. - Bertrand Russell

I cannot teach anybody anything, i can only make them think. - Socrates
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Probleme mit Mergesort

  Alt 9. Mär 2006, 20:43
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
  Mit Zitat antworten Zitat
Benutzerbild von whiteshark
whiteshark

Registriert seit: 4. Dez 2003
Ort: Cottbus
222 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Probleme mit Mergesort

  Alt 9. Mär 2006, 20:49
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
Men are born ignorant, not stupid; they are made stupid by education. - Bertrand Russell

I cannot teach anybody anything, i can only make them think. - Socrates
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 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