Merge Sort In Python Explained (With Example And Code)
Vložit
- čas přidán 19. 06. 2020
- Merge Sort is an efficient sorting algorithm with O(nlogn) running time. In this video I show you a quick example and how to implement this algotrithm in Python step by step.
This video is part of the basic algorithms in Python playlist. The goal is to get an understanding of basic computer science algorithms and their implementation in Python.
For more coding videos subscribe to my youtube channel. - Věda a technologie
Probably the best videos I have seen on these basic algorithms on CZcams. Keep up the awesome work! have learned so much from your videos!
Been on YT for too long looking for exactly this, a simple implementation. Brilliant.
Nice video Felix! I'm subscribed now. Keep doing tutorials because you're well-structured in explanation. Thank you!
The most clearly explained one. Great job! Thanks!
Clear, concise, thorough and simple algorithm. Finally understood this, thank you for your great explanation!
Great explanation with a simple and clean code example. Appreciate the help!
Hats off to you for explaining everything step by step, even the basic things like colon, every index. I'm a beginner with 3 weeks into python and i started my second course on FreeCodeCamp that's an interactive one with a lot harder projects than i ever done. This is my second recursion project, their variable naming was way too long and i was being overwhelmed with very long variable names. My code from project looks identical to yours and yet yours is so concise and easy to read. Recursion is still something that i'm struggling with, but i feel like this video got me closer to understanding it. Thank you!
thank you so much this is what I call an explanation going straight forward to the point with all the important details this is a worth millions views
This is really simple and elegant. I wish I found this video before battling with merge sort - Thanks
you did an absolutely amazing job on explaining merge sort! im glad that i found ur vid!
Great video, thanks! It really helped me understand it. The way of splitting the lists was great, I hadn't thought of that
Grüße
Its my first algorithm in my life and I am finally able to code it.
Thank you for your help.
Best videos should reach more people. CZcams should show this kind of videos in recommendations.
Highly recommended. Superb Explanation.
This is an awesome video!
I am doing the algorithms module on Khan Academy. I understood what i was suppose to do fairly easily. Khan Academy's challenge is in JS but was not understandable.
I skipped through to the code example part and you explained this perfectly. I understood exactly why you were doing each line of code instantly.
Putting this into practice may be a little harder but now i have a code example which is thoroughly commented in my own words to help me solve future problems using merge sort
THANK YOU
Hey There! Thank you very much for explaining this algorithm. You made it so easy to understand. I appreciate it. Thank you!
This is the best explanation, I ever found on sorting . Thankyou sir!!
Excellent explanation of the code. Super easy to understand the concept this way, thank you.
Wonderful explanation, I really like how you describe WHY you are doing things at each step.
Many people create tutorial videos where they simply say "okay and now we do this to get it to compare how we want to" and don't say why they do it that way.
Bro u r amazing at explaining these! Best so far that I have found.
explanied so nicely ...understood after watching this vedio only.. mission accomplished!!
Probably the best merge sort video on youtube....
Lot of people just confuse on this topic due to lack of clarity... even the experieenced ones
The algorithm in code form is not intuitive or trivial at all.
Thank you! This was a great in-place solution. I would love to see you walk through a non-in-place solution.
read a comment that this is the best video on youtube for merge sort and i would like to say indeed it is the best
Well done, dude your explanation is very clear I understand your explanation. Keep upload more video on DSA. 🤘🤘please
This was amazing, keep it up...
Thanks :)
Exactly what I need right now
great video with details and simplicity, thank you!
Great explanation. Remember to add the base case when len(arr)
Great explanation and amazing presentation also! Thank you so much for sharing the knowledge!
yeah really its very simple to understand the concept thanks dude
for me before reaching to this video i think that merge sort is very hard to understand but when i saw this video i can say its very very simple
thank you so much dude😊😊
You are awesome for teaching like this. Thank you a lot
thank you so much, You saved me, I tried to implement merge sort with C, but most of C tutorials make it complicated
The explanation was so clean and easy to understand... Thank you 😄
You explained this in such an easy way compared to my uni professor lol. I couldn't thank you enough for these vids!
thank you, I finally understood the merging step.
excellent tutorial! right before my exam!
You explain things so well, thank you!!!
Great explantion! Toll gemacht! 🙂 Danke Felix
I love sorting numbers! Thank you for the great tutorial
Absolutely amazing. Thank you, thank you, thank you.
Sirrrr wonderfully explained.
just loved it.
Thanks, the explanation helped me a lot.
The best video of all the videos!
that was awsome, you've helped me so much
Very well explained. My algorithms class was terrible lol.
Thank you, this was a super useful video!
Thanks for these videos felix!!
very nicely explained merge sort.
So informative! Big up from jp🇯🇵
thank you! very easy to understand explanation
Very clear! Thank you very much
Was very helpful in the last minute
Simply Beautiful, thank you.
best explanation yet thanks.
Very Easy to learn. Thanks
I Loved It So Much.. Good Luck
i really like your videos
Great video bro... keep it up👌🤙
Very easy to understand thx!
brilliant explanation, Hats off
love ur lucid explanation❤❤❤❤❤
actually this is very simple and wow explanation
Cool realization!
perfect video. 10/10
thanks for this great explanation
Great video keep it up
Great Video please make data structure and algorithms full series playlist
such a nice explanation thankyou
Neat clean and concise
Much better than the million videos out there just talking rubbish
Thanks for the clear explanation.But i have few questions. When we are calling the merged array(left_arr) function if my array is of length 1 for example. My code checks for the condition whether the length of my array is greater than 1 or not ie..if(len(arr)>1 and it will fail. When will it go to the first while conditions. Ex: 2,6,5,1,7,4,3 and my left_list=2 and right_lst=6 and now it will run array(left_arr) ie array(2) the condition is not satisfied here since my array length is equal to 1 so it will not go inside the loop right? Correct me if i am wrong since i am new to programming
This is when the recursion will stop with the list values of 2 and 6 and the lines of code after the recursive calls will be executed.
awesome explanation
Thanks for sharing!
How would I do with this names and scores, like a highscore table where it will put highest score at the top but if 2 players have the same score it goes alphabetical
Awesome tutorial
can u make count inversion video pls .........this is very nice explanation
Wow man ur underrated!!
in this code there is an issue where u should put a base case before the while loop
if len(l1)
hey felix i'm abit confused regarding the last two while loops in which we are simply adding the remaining elements of either of the array if there are! how are we checking those remaining values for comparison?
This is the case where all the elements in the other array have already been added to the sorted array. If your left array is [1,2,4,5] and your right array is [2,3,1828,183885], then by the time you reach 1828 in the right array, all the elements in the left array will have already been sorted in the main array, so you can just add the last 2 elements of the right array without worrying about comparisons. Hope that helps :)
Hi Team, in the line 2, it is giving me runtime error, stating mximum depth recursion comparison
Hi, can someone please explain to me the recursion part? I can only vaguely understand how recursion works in this problem. Thank you
thank you very much!!!!
what if we have 2 arrays and we have to sort them by mergesort?
Thaks Felix.
thank you
Why does the function have no return
Thank you so much
Thank you
Keep making tuts :)
Thanks buddy 😍
I have a question about your method. Is this fully recursive? Seems like only the first part.
so this is why you Germans are so good at engineering. such a thorough explanation!
in minute 6 you said seven ? its thats means 5 ? yes or no?
Is O(n) the time complexity of this code or is it O(nlogn)?
Awesome explanation, but based on how you implement it, the left side should be smaller in the example you give: Len = 7, 7//2 = 3. 0:3 captures the actual range of 0 thru 2, or the first 3 elements
Thank You Sir
big thankss
dont we need base case?
shouldn't the first while loop conditional read "if left_arr[i]
Thanks for the video. However, I don't understand couple of things: 1) how come the code ever get to the line which starts with # merge comment if it is always sending array to the recursion in the case of len(array)>1 and if that condition is not satisfied it just returns the array (actually not because there is no return) so #merged comment and the rest of the code is never going to be executed. 2) Also, as I mentioned in the parantheses before, it returns "None" if I apply this code and if I add the return command (return array) at the end of the function, it gives wrong answer in which the array is not sorted correctly.
I have the same doubts! Did you sort them out?
@@gabrielvictorrusso5931 did you try it?
Yes, I did, I know it works wonderfully, but I need help to understsnd whats happening, otherwise I’m just learning code recipes
@@MahlakaSami Same issues.
You're correct that the code only enters the merge section (# merge comment) when the length of the array is greater than 1, and it recursively calls merge_sort on the left and right halves of the array. However, the merge section is executed during the backtracking phase of the recursive calls.
When the recursive calls start to return, they bring back smaller sorted subarrays. The merge section is responsible for combining these smaller sorted subarrays into a larger sorted array. So, the merge section is indeed executed during the recursive backtracking phase, not during the initial recursive calls. This is why the code is able to sort the array even though it might not seem immediately obvious.
Regarding the issue with returning "None":
In the provided code, the sorting is achieved by directly modifying the input array arr. Instead of returning the array, the sorting is done in-place, and the final sorted array is available directly in the arr variable.
The original code sorts the array in-place, so there's no need to add a return statement at the end of the function.
I hope this explanation helps :)