Diskussion:Mergesort

message: Kann bitte jemand mit Sysop-Rechten diesen Artikel nach MergeSort verschieben, damit wir innerhalb der Wikipedia eine einheitliche Schreibweise haben? --Head 11:09, 31. Aug 2003 (CEST)
replies: text: Falls diese Verschiebung (wobei es eigentlich nur um eine Umbenennung geht) noch gewünscht ist, dann wären wohl die (mittlerweile dafür eingerichteten) zugehörigen Verschiebewünsche ein besserer Ort dafür. Mit lieben Grüßen. -- 77.191.247.38 08:27, 10. Jan. 2024 (CET)
thread_title:  Erste Anmerkungen: Bitte um Verschiebung 

message: Der Link zu den Java-Beispielen führt zu folgendem Fehler:
 Proxy Error
 The proxy server received an invalid response from an upstream server.
 The proxy server could not handle the request GET /~staerk/algorithms/SortAnimation.html.
 Reason: Could not connect to remote machine: Connection refused
Bitte beheben oder den Link entfernen. --Herrn 12:30, 1. Nov 2004 (CET)
thread_title:  Weblink nicht verfügbar 

message: Hallo Leser ... bitte solche Bemerkungen eher auf die Diskussionsseite legen. Das Problem war die Frage, ob der Merge-Schritt innerhalb oder ausßerhalb der Abbruchbedingung liegen soll. Ich hab's mir grad nochmal angeschaut. Ich denke der Merge-Schritt ist schon richtig so (Sedgewick hat's genauso). Mir würde auch kein Grund einfallen, warum er außerhalb sein sollte. Denn die Befehle im if-Ausdruck werden nur ausgeführt, wenn auch wirklich was zum Mischen da ist ... oder? Grüße --Jkrieger 20:47, 5. Sep 2005 (CEST)
thread_title:  Anmerkung eines Lesers 

message: Ohne dem Entwickler der P-Impl. näher treten zu wollen, aber ich denke dieser Code sollte wirklich überarbeitet werden. Zunächst ist das gar kein reines Pascal, sondern Delphi, und zum zweiten ist der Code so GARNICHT modular. Er sortiert Elemente auf ner GUI!!!
Werde mich in den nächsten Tagen mal dran machen wenn ich Zeit habe.
Was sagt Ihr? --ZOiDberg 01:03, 6. Mär 2006 (CET)
thread_title:  Pascal-Implementierung 

message: Hallo,
ich möchte nur mal anmerken, dass Mergesort an sich nicht stabil ist. Die Stabilität hängt im Wesentlichen vom bitonischen Mischverfahren ab. Man kann das Verfahren auch stabil implementieren, jedoch ist das nirgends erwähnt. Ich weiss jetzt auch nicht an welcher Stelle man das im Text erwähnen sollte, deswegen hab ichs nicht reingeschrieben.--Hackendahl 16:08, 26. Mai 2006 (CEST)
replies: text: Ich habe noch nie von einer instabilen Variante von Mergesort gehört. Die folgende Vergleichslogik ergibt bei Mergesort immer eine stabile Sortierung.
 A = Element 1
 B = Element 2
 C = Ergebnis
 
 Wenn A > B dann C=B andernfalls C=A
 
 Ebenfalls funktionieren würde (aber langsamer)...
 
 Wenn A <= B dann C=A andernfalls C=B
--31.17.34.192 15:59, 12. Jul. 2022 (CEST)
thread_title:  Stabilität 

message: Ich finde es ungünstig, die Standardfunktion splitAt zu benutzen. Dadurch wird der Algorithmus nicht in seiner Gesamtheit dargestellt.
Man sollte es durch eine selbstdefinierte split-Funktion ersetzen.
-- Xyan 03:22, 26. Aug 2006 (CEST)
thread_title:  Haskell-Version 

message: Ich finde es etwas überflüssig (und auch unübersichtlich), dass so viele verschiedene Implementierungen in dem Artikel vorgestellt werden. Ich finde, dass eine Pseudocode oder Java vollkommen ausreichen würde. Schließlich müsste man der jetztigen Vorgehensweise zufolge für jede halbwegs verbreitete Sprache eine Implementierung zeigen, was den Rahmen des Artikels mehr als sprengen würde. IMO ist das ein klarer Fall für die Wikibooks. Ein Wikibook Implementierung von Sortieralgorithmen wär sicher nicht das ware, aber dafür könnte vielleicht in den Wikibooks zu den entspr. Sprachen ein neues Kapitel "Implementierung typischer Algorithmen" eröffnet werden, auf diese dann dieser Artikel verweist. --87.78.90.44 23:40, 28. Aug 2006 (CEST)
thread_title:  zu viele Implementierungen 

message: Sowohl der normale als auch der natürliche Mergesort lassen sich auch vollständig iterativ programmieren. Wenn ich demnächst mal Zeit hab, kann ich mal ein Java-Beispiel für den iterativen natürliche Merge-Sort angeben.
Außerdem wärs noch ganz hilfreich zu erwähnen, dass der Verschmelz-Schritt auch gut parallelisierbar ist (Jeder Rechner bekommt ein eigenenes Paar von Unterlisten), jedenfalls bis auf die letzten Verschmelzschritte.
Ansonsten sollte nochmal jemand daraufhinweisen, dass der normale Mergesort nur Listen mit 2^n Elementen verarbeiten kann. Listen mit anderen Größen müssen zuvor erst aufgefüllt werden.
:# Sollte man definitiv stärker drauf hinweisen. Insbesondere funktioniert Mergesort dan auch in-place und ist für viele Dinge wesentlich besser geeignet als Quicksort. (man braucht noch nicht einmal den Stack vom Quicksort)
:# Siehe STL-Parallel (gcc-Implementierung) und STXXL, da werden parallelisierte Mergesorts effektiv implementiert.
:# Ist doch Unsinn. Beim rekursiven Mergesort klappt das durch Rundung. Dann hat man ab und zu eben Teilfelder mit verschiedener Anzahl zu mergen. Beim iterativen Mergesort klappt das durch eine einfache zusätzliche Bedingung, die eine Bereichsüberschreitung verhindert. Von einer vorherigen Verlängerung habe ich noch nie etwas gehört. --Chricho 11:13, 28. Aug. 2009 (CEST)
thread_title:  Iterative Implementierung 

message: Hallo zusammen!
Ich wäre dafür alle Implementierungen bis auf (sagen wir) max. drei zu löschen ... die Wikipedia ist ja schließlich kein Code-Repository, sondern eine Enzyklopädie. Ich denke es würde Java oder C, Pascal und Haskell reichen ... oder evtl. sogar nur Pseudocode? Die Java-Implementierung für Listen ist evtl. noch sinnvoll, aber ich denke ein einfach zu lesender Pseudocode oder Pascal (finde ich noch am besten zu lesen) würde vollkommen ausreichen. Eine iterative Implementierung fände ich schön ... evtl. auch in Pascal/Pseudocode?
Ich schlage einfach mal folgenden Pascal-Code vor. Was meint ihr?
  { N: länge des Feldes a[1..N], das sortiert werden soll }
  procedure merge(links:integer, mid:integer, rechts:integer);
  var i,j,k:integer;
      b: array[links..rechts] of datatype;
  begin
    { Mischen der sortierten Unterfelder
      dabei wird ein Hilfsfeld b verwendet
        1. Daten in Hilfsfeld kopieren }
    for i:=mid downto links do 
      b[i] := a[i];
    for j:=mid+1 to rechts do 
      b[rechts+mid+1-j] := a[j];
    
    {      Die Felder sind jetzt in b[] so angeordnet, dass sich die
           jeweils größten Elemente in der Mitte befinden
           i und j zeigen auf auf den linken, bzw. rechten Rand
  
         2. Mischen: }
    for k:=links to rechts do
      if b[i]<b[j] then begin
        a[k]:=b[j];
        i:=i+1;
      end else begin
        a[k]:=b[j];
        j:=j-1;
      end;
  end;
  procedure mergesort(links:integer, rechts:integer);
  var mid:integer;
  begin
    if (rechts-links>0) then begin { Abbruchbedingung für Rekursion }
      { Mittleres Element bestimmen und rekursiver Abstieg }
      mid := (rechts+links) div 2; 
      mergesort(links, mid);
      mergesort(mid+1, rechts);
    
      merge(links, mid, rechts);
    end;
  end;
Außerdem sind da ein paar Sachen zum merge-Schritt zwischen die Code-Beispiele gerutscht. Viele Grüße und frohes Fest, --Jkrieger 19:57, 24. Dez. 2006 (CET)
thread_title:  Ausufernde Implementierungslisten 

message: Ich habe mal die Java-Implementierung durch eine andere ersetzt , die nicht ständig neue Arrays anlegt und überflüssigerweise in der Aufteilphase Daten kopiert. Das bringt bei mir (bei den Größen, die ich im Hauptspeicher testen kann) etwa einen Faktor 2 bis 3. -- Paul E. 18:10, 30. Jan. 2007 (CET)
thread_title:  Java-Implementierung 

message: Ich habe diese Ruine jetzt erstmal aus dem Artikel entfernt. Falls sich jemand berufen fühlt, eine saubere Pascal-Implementation zu erstellen (was angesichts der ohnehin schon im Überfluss vorhandenen Alternativen in anderen Sprachen m.E nicht notwendig ist), so kann er die vorherige Version ja noch im Archiv begutachten:
http://de.wikipedia.org/w/index.php?title=Mergesort&oldid=27481785#Pascal
-- Matthias/213.168.121.143 00:51, 12. Feb. 2007 (CET)
thread_title:  Ruinöser Pascal-Abschnitt 

message: Ich hab 3 fehlende static in der Java-Listen Implementierung ergänzt.
Außerdem finde ich beide Java-Implementierung etwas unschön und füge daher hier für Freunde des kurzen, kommentarlosen, englischen Codes entsprechende Versionen an.
: Hmm, wenn ich das richtig sehe, besteht (bei der array-Variante, die andere habe ich mir nicht angesehen) der Unterschied eigentlich nur darin, dass die Variablennamen verkürzt und die Kommentare entfernt wurden. Ich sehe nicht wirklich, inwieweit das schöner ist ... - es hilft jedenfalls IMHO nicht, das Verständnis des Algorithmus (bzw. seiner Implementation) zu fördern. -- Paul E. 16:43, 20. Feb. 2007 (CET)
thread_title:  Java(-Listen)-Implementierung 

message: Inwiefern wird bei diesem Verfahren denn gemischt? Ich finde es irreführend, in diesem Zusammenhang von "Mischen" zu sprechen. --Daniel Mex 20:53, 20. Jul. 2007 (CEST)
thread_title:  Mischen? 

message: Ich finde, in dem Satz Das Verfahren arbeitet bei Arrays in der Regel nicht in-place, es sind dafür aber (trickreiche) Implementierungen bekannt  ist das trickreiche falsch gewählt. Lässt man das Wort weg, macht der Satz wenig Sinn, und das obwohl er in der Klammer steht. --Zhujik 18:15, 18. Jul. 2008 (CEST)
thread_title:  trickreiche Implementierungen 

message: Ich habe Kritik an der Veranschauungsgrafik auszuüben: . --Jobu0101 13:41, 12. Nov. 2009 (CET)
thread_title:  Veranschauungsgrafik 

message: Ich denke wir sollten uns auf einen Begriff für den Gebrauch im Artikel beschränken und den anderen nur bei der ersten Nennung in Klammer anfügen. z.b. [...] Verschmelzen (auch Mischen) [... und dann nur noch ...] Verschmelzen
Persönlich finde ich den Ausdruck Verschmelzen um einiges besser geeignet, da dieser nicht so irreführend ist wie der deutsche Ausdruckt Vermischen. Wir sortieren ja, mischen ist praktisch das umgekehrte. (Obwohl beie Übersetzungen für das enlgische merge korrekt wären)
In der deutschen Literatur werden beide Begriffe verwendet, aber in einem Artikel / einem Buch allein, ist immer nur ein Artikel, sonst fehlt die Konstanz und Vereinheitlichung. Deshalb sollten wir das dringend anpassen.
Welcher Begriff zu wählen ist kann ja genauer untersucht werden...
-- Dolan 02:11, 13. Mär. 2010 (CET)
thread_title:  (Ver)mischen vs. Verschmelzen 

message: Ich bin über die Animation und das Beispiel ein wenig verwundert, weil ich die Funktionsweise von Mergesort ganz anders kenne. In der Form wie ich Mergesort kenne, ist die Anzahl der Listen zu Beginn identisch mit der Anzahl der zu sortierenden Elemente. Es werden dann immer zwei benachbarte Listen zu einer zusammengerechnet, bis am Ende nur noch eine Liste vorhanden ist.
Mergesort wie ich es kenne...
 a|n|e|x|a|m|p|l|e
 an|ex|am|lp|e
 aenx|almp|e
 aaelmnpx|e
 aaeelmnpx
--31.17.34.192 15:49, 12. Jul. 2022 (CEST)
thread_title:  Funktionsweise