AGB  ·  Datenschutz  ·  Impressum  







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

merge sort Programm

Ein Thema von Koby · begonnen am 8. Nov 2005 · letzter Beitrag vom 14. Nov 2005
Antwort Antwort
Der_Unwissende

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

Re: merge sort Programm

  Alt 8. Nov 2005, 14:18
Hi,
der Mergesort ist eigentlich gar nicht so schwer (merkt man leider erst wenn er fertig ist). Wichtig ist, dass du dir gut klar machst, wie er eigentlich funktioniert.
Kann dir auch nur raten zu versuchen ihn selbst zu programmieren!

Die wichtigste Grundidee ist es, dass du zwei verschiedene Schritte hast. Der erste Schritt besteht darin, dass du ein Feld in seiner Mitte teilst. Der Zweite liegt nun darin, die beiden hälften wieder sortiert zusammen zu fügen.
Das ganze rekursiv ist es auch schon.

Am leichtesten ist er zu verstehen, wenn du den mal auf einem Blatt Papier mit einem kleinen Array < 10 Elemente durchspinnst.
Nennen wir deine ganze Liste einfach A. Du zerlegst A in B und C. Sagen wir A hat 4 Elemente, dann hat B zwei und C 2. Nun machst du dass gleiche mit B und C. Als Rekursionsanker schaust du ob es mind. Zwei Elemente gibt. Also : Hat A mindestens 2 Elemente? Ja, zerlegst du in B und C (je zwei Elemente). Nun zerlegst du B (hat mindestens zwei Elemente) in B1 und B2 und C (auch zwei Elemente) in C1 und C2.
Nun machst das gleiche mit B1, B2, C1, C2. Aber jede dieser Mengen hat weniger als zwei Elemente. Ok, dann bist du mit dem zerlegen fertig (Teilproblem des Mergesorts). Nun musst du die zusammenfügen. Dazu schaust du dir B1 und B2 paarweise an. Du nimmst jetzt eine neue Liste, die so groß ist wie B1 + B2 (von der Länge, also hier 2). Dann guckst du ob B1 > B2, wenn ja, dann schreibst du B1 in die Liste, sonst B2. Dass machst du für alle Elemente von B1 und B2. Die sind dann sortiert in der Liste.
Da B1 und B2 aus B entstanden sind, ist die neue Liste also gleich dem sortierten B.
Analog für C1 und C2 sowie C.
Nennen wir die beiden Sortierten Listen B' (die aus B1 und B2 enstandene) und C' (die aus C1 und C2 enstandene). Nun weißt du, dass sie alle Elemente aus A enthalten (denn A wurde in B und C zerlegt). Also mischt du die wie gehabt. Neue Liste, für alle b aus B' einzeln gucken, ob größer als c aus C' und sortiert in die neue Liste schreiben, fertig.

Das wichtige ist hier der Divide-and-Conquer Ansatz (Teile und Herrsche). Du zerlegst dein Sortieren in sehr kleine Probleme und zwei Schritte. Du sagst, füge die sortierten Teillisten sortiert zusammen. Das ist alles.

Gruß Der Unwissende
  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 13:28 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