Algorithms and Data Structures #21 - Merge Sort: Recursive Divide and Conquer

  Рет қаралды 17,315

The Morpheus Tutorials

The Morpheus Tutorials

Күн бұрын

Пікірлер: 36
@sleppedasschaf7519
@sleppedasschaf7519 4 жыл бұрын
Dein channel ist total underrated du hachst schon so viele gute tutorial für soviel verschiedenen programmier sprachen, IT infos, pen testing, und das alles noch kostenlos also ehre :D ich Feier deine videos einfach :) ;) ;) :) ;) :)
@Leonardo-eu7jt
@Leonardo-eu7jt 3 жыл бұрын
Mittlerweile sind teilweise die Sachen zu Hacking/Sicherheit wegen dem KZbin Team leider nicht mehr gratis... :(
@pepsiman7180
@pepsiman7180 4 жыл бұрын
Kommentar für den Algorithmus:))
@flyingskillyuhu
@flyingskillyuhu 4 жыл бұрын
Dieser auch wieder ✌
@einmensch3660
@einmensch3660 3 жыл бұрын
Ohne deine Videos würde ich im Informatik Studium wohl kaum durchblicken. Bei dir kann man alles leicht verständlich lernen und in der Uni nochmal vertiefen. Dafür bin ich dir sehr Dankbar ;D
@gnul
@gnul 4 жыл бұрын
Bin ich der einzige der das Alphabet nur bedingt auswendig kann? Ich habs im Gehirn nur als eine Art Linked List. :D Ab etwa ~mittig im Alphabet brauche ich 2 oder besser 3 aufeinander folgende Buchstaben gleichzeitig im RAM, erst dann habe ich den Pointer zum nächsten. Ob R vor U kommt, dafür hab ich einen Aufwand von O(indexOfLastFound). 😅 Den Index der einzelnen Buchstaben kenne ich auch nicht. Klar ich weiß, A-X kommt vor Z und sowas was man weiß, aber joa, ich muss häufig durch iterieren.
@nayjer2576
@nayjer2576 3 жыл бұрын
hahaha genau so ist es bei mir auch. L kommt vor oder nach M, kann ich so nicht sagen ^^
@pocketrocket6604
@pocketrocket6604 4 жыл бұрын
Tolle Videoreihe mit sehr gut erklärten Themen!
@catsaresocute650
@catsaresocute650 2 жыл бұрын
Ich habe (wie immer) mich nicht getraut in der Vorlesung zu fragen, aber warum wird nicht einfach ein Zufallswert für p genommen? Das sollte ausser ganz rechts oder ganz links doch eigendlich die Sache beschleunigen? Warum ist die sortirung in so viele Schritte zerlget? Kann der Algorithmus nicht kürzer dargestellet werden als diese einzelenen Sort-Schritte in einer neuen iteration aufzurufen? Das verlängert die genutzte Zeit und Speicher nur ohne erkennbaren Nutzen (für mich)?
@ara6123
@ara6123 4 жыл бұрын
Hallo ich hab heute python 2.7.3 installiert aber ohne pip. pip geht bei mir nicht was soll ich machen
@ara6123
@ara6123 4 жыл бұрын
@Jontherippa ich habe windows
@ara6123
@ara6123 4 жыл бұрын
@Jontherippa danke für deine antwort ich habe aber windows
@TheMorpheusTutorials
@TheMorpheusTutorials 4 жыл бұрын
du kriegst pip hierüber: pip.pypa.io/en/stable/installing/
@ara6123
@ara6123 4 жыл бұрын
@@TheMorpheusTutorials danke ich versuchs mal
@ara6123
@ara6123 4 жыл бұрын
@@TheMorpheusTutorials ich habe python 3.8.2 und python 2.7.9 und pip habe ich auch bekommen aber wenn ich pip install pygame schreibe dann ist pygame auf python 3.8.2 installiert und nicht auf python 2.7.9 why
@spong111bob
@spong111bob 4 жыл бұрын
Muss ich im Algorithmus eigentlich einen Sonderfall schreiben, wenn zwei Elemente gleich sind (hier wenn z.B. L und L gleichzeitig geprüft werden) oder wie entscheidet der da?
@reyanpe9505
@reyanpe9505 4 жыл бұрын
hallo, ich habe die gleiche Frage wie der Kollege (Ralf Kieschnick ): a) warum muss man das ganze mehrmals teilen (16->8->4->2) und nicht direkt das ganze in einer zweier Liste (liste[0]:liste[1], 3 bis 4, ...) b) wenn ich alles auf ein Element unterbreche dann habe ich doch n Operationen gemacht, oder nicht. in einer zweier Gruppe n/2. Also o(n) für das Aufteilen und nicht o(1). Oder nicht??? Beste Grüße und danke für die tolle Videos
@nayjer2576
@nayjer2576 3 жыл бұрын
a) Du müsstest von der Einzelliste eh wieder immer in Zweier zusammenpacken. Aus 2 mal 1 wird eine Zweierliste, aus zwei Zweiern dann eine Viererliste bis n.. also log(n) mal. Durch die Rekursionsaufrufe geht das Zusammenfügen dann automatisch, da die auf dem Stack von oben nach unten abgearbeitet werden. b) Ne, ähnlich wie bei a). Wenn du den iterativen Ansatz von Merge-Sort machst (also Bottom-Top), dann brauchst du auch nur O(1) um die Liste aufzuteilen, du hast ja wahlfreien Zugriff auf die Listenteile. Du kannst in einer einzigen Rechnung alles aufteilen (also 0:1, 3:4 usw..., wie du es bei a) gemacht hast)
@nayjer2576
@nayjer2576 3 жыл бұрын
ist zwar 1 jahr her vlt. hilfts jemanden aber ich hatte selbst das thema vor 2 tagen an der uni und probier mich durchzukriegen
@maxbart1353
@maxbart1353 4 жыл бұрын
ich hätte mir gelich ein beispiel dazu gewünscht
@TheMorpheusTutorials
@TheMorpheusTutorials 4 жыл бұрын
Ich mach doch immer erklärung dann code momentan 😅
@maxbart1353
@maxbart1353 4 жыл бұрын
@@TheMorpheusTutorials ja, aber bitte bitte in einem video, damit das zusammen ist. aber sonst top serie.
@maxbart1353
@maxbart1353 4 жыл бұрын
@@TheMorpheusTutorials und wie wäre es mit einer KI die Bilder verändert hin zu verschiedenen Stilen (alter meister). dazu hätte ich so gern videos, falls dich das anspricht.
@snouzz-gaming
@snouzz-gaming 2 жыл бұрын
Frage: Wieso ist es nun Rekursive? Ist Merge-Sort ein rekursiver Suchalgorithmus? Wenn man Deide and Conquer ansieht dann ist es ja auch dann rekursive aber eigentlich nur ne for bis 1 Element da steht oder wie soll man das verstehen? Grüße
@henning9641
@henning9641 2 жыл бұрын
Ich habe folgendes Problem. Ich habe eine endliche Menge an Punkten in einer Fläche bestimmter Größe. Ich möchte jetzt alle Punktepaare finden, die näher zusammen liegen, als ein minimal einzuhaltender Abstand. Fertig. Ich bin bestimmt nicht der erste der dieses Problem lösen möchte & vermutlich auch nicht der Kleverste, kennt jemand eine Methode die genau das macht ? Also irgendwie kann ich das auch machen, aber ich will das extrem oft machen, sodass ich einen effektiven Weg suche. (abstand zwischen allen Punkten bestimmen und sortieren ist keine akzeptable Lösung :D ). Danke für jeden Tipp.
@anni2410
@anni2410 4 жыл бұрын
Wie kommt man denn von log(n) *O(1)+O(log(n)*O(n)*O(1)) zu O (log(n))* (O(n+1)), hab mir die Stelle im Video mehrmals angehört, aber es trotzdem nicht verstanden 😂 vielen Dank schonmal 😊
@TheMorpheusTutorials
@TheMorpheusTutorials 4 жыл бұрын
Kommt später noch etwas genauer, wie man das abschätzt 👍
@dickewurstfinger9093
@dickewurstfinger9093 2 жыл бұрын
Ist im prinzip einfach nur ausklammern. Wenn du log n und n als variable betrachtest hast du sowas wie a + a * b = a * (1 + b)
@sumsumcity841
@sumsumcity841 4 жыл бұрын
Hey morpheus ich habe eine Frage, die vielleicht etwas vorgreift. In der Vorlesung haben sie uns gesagt, dass quick sort der beste sort algorithmus ist. Da er im average case O(nlogn) hat. Doch im worst case hat er ja O(n^2) was ja ziemlich schlecht ist. Merge Sort und Heap sort haben ja beide (ich glaube in allen cases) O(n*logn). Wieso werden diese nicht mehr gebraucht? Kann es sein, da man bei Heapsort zb zuerst de Heap machen muss usw?
@TheMorpheusTutorials
@TheMorpheusTutorials 4 жыл бұрын
Ich glaube das machen wir sogar direkt nächste Woche 👍
@nayjer2576
@nayjer2576 3 жыл бұрын
Ich glaube weil Merge Sort nicht in-place ist, da er zusätzlichen Speicherplatz benötigt
@maxbart1353
@maxbart1353 4 жыл бұрын
dass du am Ende ein Beispiel codest, bei jedem video der Reihe
@Noah-wc5kl
@Noah-wc5kl 4 жыл бұрын
Kennt jemand ein gutes tool bei dem man IP Adressen präziese Orten kann?
@LB-qr7nv
@LB-qr7nv 4 жыл бұрын
Hier meine Lösung: #Merge Sort l1 = ["j","e","e","e","e","e","e","E","e","e","G","e","e","f","g","s","e","i","ef","l","e","s","g","y","b","f","d","l","j","a","e","r","i","h","h","a","d","p","p","k","p","ö","ü"] l2 = [7,93.8,5,41,3,-65,900,975,3702540,580,94672,1,7083,-965,2.9170,56,1083027.5,0,-1.5] l3 = [0] l4 = [chr(9786),chr(9835),chr(9787),chr(9786),chr(9824),chr(9827),chr(9834),chr(9829)] l5 = [] def erstellen(l): if l == []: l2er = [] return l2er l2er = [] for x in range(0,len(l)-1,2): if l[x] < l[x+1]: l2er = l2er + [[l[x],l[x+1]]] else: l2er = l2er + [[l[x+1],l[x]]] if len(l)%2 != 0: l2er = l2er + [[l[-1]]] return l2er def sortieren(l1, l2="##nicht_vorhanden"): l3 = [] if l2 == "##nicht_vorhanden": l3 = l1 else: while l1 != [] and l2 != []: if l1[0] < l2[0]: l3 = l3 + [l1[0]] a = (l1[0]) l1.remove(l1[0]) else: b = (l2[0]) l3 = l3 + [l2[0]] l2.remove(l2[0]) if l1 != []: l3 = l3 + l1 elif l2 != []: l3 = l3 + l2 return l3 def überlisten(l2er): länge = len(l2er) if länge == 1: return l2er[0] elif länge == 0: return [] letzte = 0 y = 0 while y < 3: lviele = [] try: for x in range(0,len(l2er),2): lviele = lviele + [sortieren(list(l2er[x]),list(l2er[x+1]))] letzte = x except IndexError: if len(l2er[0]) == 1: break if l2er[letzte] == l2er[-1]: lviele = lviele + [l2er[-1]] elif l2er[letzte+1] == l2er[-1]: lviele = lviele + [l2er[-1]] else: lviele = lviele + [sortieren(l2er[(letzte+2)],l2er[-1])] l2er = lviele if len(lviele) == 1: break lviele = lviele[0] return lviele l2er = (erstellen(l1)) print(überlisten(l2er)) l2er = (erstellen(l2)) print(überlisten(l2er)) l2er = (erstellen(l3)) print(überlisten(l2er)) l2er = (erstellen(l4)) print(überlisten(l2er)) l2er = (erstellen(l5)) print(überlisten(l2er)) Noch nicht perfekt, aber schon recht schnell Edit: Danke Morpheus, deine Videos sind wirklich sehr gut
@Adlerwacht
@Adlerwacht 3 жыл бұрын
Bitte weniger Füllworte verwenden (äh, so, quasi, sozusagen, Endeffekt). Das ist eine Seuche und nervt.
@hyde_stopStealingMyUsername
@hyde_stopStealingMyUsername Жыл бұрын
lappen
The Stupidest Algorithms - BogoSort / StupidSort in Python
10:25
The Morpheus Tutorials
Рет қаралды 8 М.
Merge Sort Algorithm in Java - Full Tutorial with Source
23:02
Coding with John
Рет қаралды 190 М.
Players push long pins through a cardboard box attempting to pop the balloon!
00:31
Accompanying my daughter to practice dance is so annoying #funny #cute#comedy
00:17
Funny daughter's daily life
Рет қаралды 28 МЛН
BAYGUYSTAN | 1 СЕРИЯ | bayGUYS
37:51
bayGUYS
Рет қаралды 605 М.
路飞做的坏事被拆穿了 #路飞#海贼王
00:41
路飞与唐舞桐
Рет қаралды 25 МЛН
MergeSort
21:44
Algorithmen und Datenstrukturen
Рет қаралды 4,5 М.
7 Design Patterns EVERY Developer Should Know
23:09
ForrestKnight
Рет қаралды 77 М.
Die Haftung für SOFTWARE-BUGS kommt!
24:58
The Morpheus Tutorials
Рет қаралды 53 М.
10 FORBIDDEN Sorting Algorithms
9:41
Ardens
Рет қаралды 935 М.
Learn Quick Sort in 13 minutes ⚡
13:49
Bro Code
Рет қаралды 407 М.
Algorithms and Data Structures #29 - An Introduction to Graphs
11:59
The Morpheus Tutorials
Рет қаралды 10 М.
Deutschlands E-Rechnung Desaster
20:41
The Morpheus Tutorials
Рет қаралды 64 М.
Algorithms and Data Structures #25 - Big O Notation Visualized
10:13
The Morpheus Tutorials
Рет қаралды 9 М.
Mergesort Algorithmus [mit Animation, Deutsch]
9:36
HappyCoders
Рет қаралды 10 М.
Merge Sort In Python Explained (With Example And Code)
13:35
FelixTechTips
Рет қаралды 229 М.
Players push long pins through a cardboard box attempting to pop the balloon!
00:31