www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Algorithmen und Datenstrukturen" - Mergesort
Mergesort < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Mergesort: Anzahl der Vergleichop's
Status: (Frage) beantwortet Status 
Datum: 12:00 Di 25.04.2006
Autor: nieselfriem

Aufgabe
wir haben folgende Liste von Zahlen L1={8,4,5,1,2,7,3,6}
Nun sollen wir ermittlen wieviel vergleichoperationen nötig sind, um diese Liste nach dem mergesort-Algorithmus zu sortieren.

Nun meine Frage:
Beim Mergesort-Algorithmus wird die Liste so lange durch 2 geteilt, bis die lemente einzeln sind und dann miteinander verglichen und dann wieder vermischt und verglichen usw.

Nun komme ich bei dieser Liste auf 44 vergleichoperationen.

Ist das korrekt?

Wenn nicht könntet ihr mir schildern, wie ich da am besten vor gehe?

Gruß niesel

        
Bezug
Mergesort: Antwort
Status: (Antwort) fertig Status 
Datum: 12:24 Di 25.04.2006
Autor: kretschmer

Hallo,

also 44 erscheint mir doch arg hoch. Überleg doch mal, wie der Algorithmus funktioniert. Du hast insgesamt [mm] $\log [/mm] 8$ tiefen Berechnungsbaum. In der ersten Ebene hast Du 4 mal 2 einelementige Listen, für die Du jeweils eine Vergleichsoperation braucht. Wieviel Vergleichoperationen brauchst Du denn für das Mischen von 2 2-elementigen Listen oder 2 4-elementigen Listen?

Du solltest auf 12 Vergleichsoperationen kommen, wenn ich mich jetzt nicht verrechnet habe. Beachte, dass Du bei dem Mischen zwei sortierte Listen hast, dadurch ist ja gerade der Algorithmus so schick... Teile und Herrsche! :-)

--
Gruß
Matthias

Bezug
                
Bezug
Mergesort: 12?
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:07 Sa 29.04.2006
Autor: Bastiane

Hallo Matthias!

> Du solltest auf 12 Vergleichsoperationen kommen, wenn ich
> mich jetzt nicht verrechnet habe. Beachte, dass Du bei dem
> Mischen zwei sortierte Listen hast, dadurch ist ja gerade
> der Algorithmus so schick... Teile und Herrsche! :-)

Wie kommst du denn auf 12 Vergleiche? Ich brauche schon 17. :-) Siehe meine Antwort hier. Oder sollte ich mich da womöglich irgendwo vertan haben?

Viele Grüße
Bastiane
[cap]


Bezug
                        
Bezug
Mergesort: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:39 Mo 01.05.2006
Autor: kretschmer

Hallo,

ohja müssten 17 sein. Hatte jeweils einen unterschlagen beim Mischen von zweielementigen Listen und drei weitere beim Schritt danach. Hmm frage mich auch gerade wie ich auf diese Zahl kam damals.

--
Gruß
Matthias

Bezug
        
Bezug
Mergesort: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:26 Sa 29.04.2006
Autor: nieselfriem

hmm!

also ich versuche das mal zu erläutern und zu verstehen

meine liste ist folgendermaßen:

8    4     5   1   2   7   3   6
4   8
           5   1
1   4      5   8
                   2    7
                             3   6
                 2      3    6   7  
1    2     3     4      5    6   7

So sollte doch bei Mergesort sortiert werden. Richtig?

Wenn ich nun 4 und 8 vergleiche entspricht doch das einer Vergleichoperation!
Bei 6 und 1 das gleiche. wenn ich nun die beiden Teilfolgende verglichen habe vermische ich sie. a und nun muß doch jede Zahl mit jeder Verglichenwerden, damit sie korrekt stehen. Oder ist das gerade mein Holzweg. Das währe ja dann wie bubblesort.
Also wie arbeited dann mergersort, wenn die beiden Teilfolgen 4 8 und 5 1 vermischt und sortiert werden?

Gruß Georg
                      


Bezug
                
Bezug
Mergesort: ausführliche Antwort
Status: (Antwort) fertig Status 
Datum: 23:05 Sa 29.04.2006
Autor: Bastiane

Hallo Georg!

Und so etwas macht man erst im Hauptstudium? ;-) Also ich habe das gestern an der Tafel mit meinen Info IV Studenten durchgerechnet. :-)

Ich glaube, ein Teil deines Ansatzes ist schon richtig, aber ich versuch's trotzdem mal ganz von vorne:

Du hast die Liste 8 4 5 1 2 7 3 6.
Im ersten Schritt wird sie in zwei vierelementige Listen geteilt:
8 4 5 1 und 2 7 3 6
Im zweiten Schritt wird jede dieser vierelementigen Listen in zwei zweielementige Listen geteilt:
aus 8 4 5 1 werden 8 4 und 5 1
aus 2 7 3 6 werden 2 7 und 3 6
Im dritten Schritt wird jede dieser zweielemtigen Listen in zwei einelementige Listen geteilt, du hast also 8 einelementige Listen:
8   4   5   1   2   7   3   6

Nun wird "gemergt":
Die einelementige Liste 8 wird mit der einelementigen Liste 4 zusammengefügt. Dafür werden 8 und 4 Verglichen [mm] \to [/mm] 1 Vergleich. Die Ergebnisliste ist:
4 8.
Im gleichen Merge-Schritt wird die Liste 5 mit der Liste 1 zusammengemischt. Dafür wird die 5 mit der 1 verglichen [mm] \to [/mm] wieder 1 Vergleich. Die Ergebnisliste ist 1 5.
Im selben Schritt wird das gleiche mit den Listen 2 und 7 und den Listen 3 und 6 gemacht - dafür brauchst du jeweils einen Vergleich, du hast also im ersten Schritt insgesamt 4 Vergleiche. Dann hast du dort vier zweielementige Listen stehen:

4 8   1 5   2 7   3 6

Nun werden die Listen 4 8 und 1 5 zusammengefügt. Der erste Vergleich ist: 4 und 1. 1 ist kleiner, also kommt sie nach links. Dann werden verglichen: 4 und 5. 4 ist kleiner, also kommt sie neben die 1. Dann werden 5 und 8 verglichen, 5 ist kleiner, also kommt sie daneben, und dann bleibt nur noch die 8 übrig. Du siehst, dass nicht jedes Element mit jedem verglichen wird. Das kommt daher, dass die zweielementigen Listen ja schon sortiert waren. Wenn also die 4 schon kleiner als die 8 ist, und du im ersten Vergleich erhältst, dass die 4 größer als die 1 ist, dann muss natürlich auch die 8 größer als die 1 sein, du brauchst also 8 und 1 gar nicht mehr vergleichen.
So, in diesem Schritt haben wir bisher 3 Vergleiche gebraucht.
Nun werden noch die Listen 2 7 und 3 6 zusammengefügt. Das geht ganz genauso und wir haben nochmal 3 Vergleiche, das ergibt dann für den zweiten Schritt insgesamt 6 Vergleiche.

Nun haben wir nur noch zwei Listen, die wir zusammenfügen müssen:

1 4 5 8 und 2 3 6 7

1. Vergleich: 1 und 2
$1<2 [mm] \to [/mm] 1$ nach links, nächster Vergleich: 2 und 4
$2<4 [mm] \to [/mm] 2$ neben die 1, nächster Vergleich: 4 und 3
$3<4 [mm] \to [/mm] 3$ neben die 2, nächster Vergleich: 4 und 6
$4<6 [mm] \to [/mm] 4$ neben die 3, nächster Vergleich: 6 und 5
$5<6 [mm] \to [/mm] 5$ neben die 4, nächster Vergleich: 6 und 8
$6<8 [mm] \to [/mm] 6$ neben die 5, nächster Vergleich: 8 und 7
$7<8 [mm] \to [/mm] 7$ neben die 6, kein Vergleich mehr nötig, da nur noch die 8 übrig ist
[mm] $\to [/mm] 8$ neben die 7 und die sortierte Folge ist - oh Wunder:

1 2 3 4 5 6 7 8

Im diesem letzten Schritt haben wir also insgesamt 7 Vergleiche gebraucht. Das macht dann zusammen: 4+6+7=17 Vergleiche. (Ich weiß nicht, wie Matthias auf 12 kommt... [kopfkratz])

Nun klar, wie das Ganze funktioniert? []Hier gibt es auch noch "unser" aktuelles Skript - ich fand es ziemlich gut, da sind auch allgemein viele lustige Bildchen drin. :-)

Viele Grüße
Bastiane
[cap]


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]