Why Is Merge Sort O(n * log(n))? The Really Really Long Answer.
ฝัง
- เผยแพร่เมื่อ 26 ม.ค. 2025
- Free 5-Day Mini-Course: backtobackswe.com
Try Our Full Platform: backtobackswe....
📹 Intuitive Video Explanations
🏃 Run Code As You Learn
💾 Save Progress
❓New Unseen Questions
🔎 Get All Solutions
Question: Analyze the total work that Merge Sort performs as an exact function of n, the length of the input list.
My Old MergeSort Video: • Merge Sort - A Step By...
The Infinite Series 1 + 2 + 4 + 8 + ... : en.wikipedia.o...
Logarithm Rules: www.chilimath....
++++++++++++++++++++++++++++++++++++++++++++++++++
HackerRank: / @hackerrankofficial
Tuschar Roy: / tusharroy2525
GeeksForGeeks: / @geeksforgeeksvideos
Jarvis Johnson: / vsympathyv
Success In Tech: / @successintech
Table of Contents (If you watch this all, you will know why Merge Sort is upper bounded by O(n * log(n)))
What This Video Will Cover 0:00 - 0:40
The Fundamental Subroutines 0:40 - 1:32
The Split Subroutine 1:32 - 8:35
The Split Subroutine In Code 8:35 - 11:05
[ Old Clip ] Merge Sort Execution Trace 11:05 - 14:38
The Merge Subroutine 14:38 - 16:54
The Recurrence Relation 16:54 - 21:45
Investigation: What Work Is Done Per Level? 21:45 - 27:10
Getting Exact: Solving For Total Work Across All Levels 27:10 - 30:50
My Whole Life Has Been A Lie 30:50 - 34:51
Checking Our Work 34:51 - 35:48
Wrap Up 35:48 - 36:30
The code for Merge Sort is in the description, fully commented for understanding.
I've really applause you when I understand something from your explanation)
ye
@@BackToBackSWE Hi, you're doing a really good job, thank you, but I couldn't find any code in the description? :)
you really should think about becoming a university professor if you enjoy teaching man. Your teaching methods are superb
The patience you had to go through every literal step, god damn, much appreciated (once again) man.
This video is way too long and discourages clicks from passive users but whatever. It needs to be in detail since brevity would confuse and glaze over critical building blocks to the larger understanding.
@@BackToBackSWE You really are a true MVP! Your videos on time complexity algorithms are a godsend! Cheers again!
Keep up the good work!!
Bro, you should be the one teaching me algorithms instead of my college professor, good job!
hey
i dont get it. wtf u learning this in college for?? you shoulda learned this in high school
Well, he is.
Phase of education varies across the globe
In my 4 years of doing a Computer Science degree I never had a lecturer explain it this well
ye
thats why our youtuber bros are here 😜😜 they must have gone through same problems
How COME a person can be this talented at teaching? Thank you a million times!
im just so average that I had to learn harder than other lol
Hey man, just wanted to add a +1 to the supportive comments. I absolutely love how you do not jump over steps assuming people know what's happening. I have a brain that needs to know why every step is included even if some might find it common sense, so this is wonderful for me. I subscribed to you because I think you deserve it. :) Have a wonderful day!
Nice, welcome to the 💩show
He explains it so clearly on every step..subscribed
For those getting stuck at [29:09], there is a 2^i before the parenthesis, but it might not be visible due to board reflections. Thank you for the video as it helped a lot to understand how its complexity is calculated for the first time.
Also found your videos through Leetcode. As someone without a traditional CS background, you have a talent for explaining things in a very clear way. I imagine making these videos must be exhausting, but I do hope you continue. Even if that means one per month :)
Thanks and nah...we are going all the way this year.
Coming from a non-computer science major, real understanding sorting part was always a real pain. (Even with my experience in working as a sw developer).
Just after watching this video for about 5 mins, lightening struck my head.
I've paid more than a few hundred bucks on algorithm + data structure courses, and was never satisfied once.
Your explanation, though it is free, is by far the best, and the only one I was completely satisfied with.
No, it's not just satisfaction, but the best I have ever encountered in my life.
Thank you once again. Truly appreciate your great work.
hahahaha thanks, I am but a boy
You are literally only youtuber who gives deep intuition behind this concept, you are giving us feeling like we could invent this by own, much respecttttt
thanks
literally the best explanation i've ever gotten. i finally get it. i go to a top university but i regret wasting my money when your videos teach me better than my professors
nah, a college education is valuable srs. Program and build in ur own time. School itself sucks sucks sucks, but the output you get molds your mind into a critical thinking machine sorta...hard to explain.
@@BackToBackSWE gotchu. i'll take your word for it. thanks for the help and i hope ya'll keep making videos
You have just converted a process of time complexity of O(n ^ 1000000) to O(log n) in this video with your awesome teaching talent. Really like the way you teach with immense patience and dedication.
thx
The. Best. Explanation. Ever. I have months confused about what it actually meant for it to be nlogn, and it all makes so so much sense now. Thank you a million times. Your videos are THE best. Much appreciated.
This is the best explanation of the merge sort on youtube.
this is the stuff i was trying to find about mergesort, not just the how, but also the why,
everyone else seems to think teaching splitting and merging functions is enough, but until u realize how the process is unfolding practically u never truely "realize" the essense of mergesort.
The thing with recursive algorithms is that they seem very easy and obvious ,until u start thinking how the computer actually handles all the states,calls,order of calls,variables etc,
thats probably why everyone tries to talk about recursion on a superficial level.
This video is so great btw .Very in-depth.
yeah and thanks
You are a legend in teaching. Pure and simple explanation with a very patient attitude. It's clear that you don't do the videos to be done, you really want to transfer your knowledge, and you do it the best. I'm happy that i find you. Keep up the good work brother!
ye, may the internet flourish
^ THIS is how to teach
The way most professors teach is as if they are giving a refresher of something the students have already learned rigorously. They should watch this video and take notes on how to teach.
ty
I found this channel through your comment in LeetCode, and I'm so glad I was able to find your channel before my tech interview. THANK YOU SO MUCH. KEEP IT GOING
I'm getting tired to be honest. So much effort, 4-6 hours a day. But, I'll keep going.
This material is gold and it gives you an order of solving leetcode problems to understand merge sort in dept. Kudos to the creator !
creator thanks u
i'm graduated from uni, but my data structures and algorithms professor sucked. this section of CS has been the bane of my existence for a long time now, and i've really appreciated this video. thanks so much. i needed a long explanation like this.
You need way more recognition man As a person who do programming, i always curios about the concrete math model behind what is commonly told I literally watch your video to find out how exactly the time complexity got deduced And man it was a damn good video Keep it up man We do need more curiosity people like you
ye, let's go to 100k
I find this to be incredibly valuable during a term where the only contact I get with my teachers is through zoom. I managed to get through my first computer science classes online with little to no issues but now that I am taking data structures I am finding that my assignments are taking 15+ hours and I think this is because of not getting to have those one on ones with my teacher. The way you have put together these videos has answered many questions that I didn't even know that I had. Thank you!!!
great to hear.
This man is an absolute gold mine. Thank you so much, this is the clearest explanation of _anything_ I have ever seen.
Thank you, appreciate it 😄 Also check out our Free 5 Day DSA Interview Prep Mini-Course - backtobackswe.com/ 🎉
This is the best analysis out there, you leave me in awe with your explanations time and again. Really waiting for new videos! This was the only one I had left by mistake, sad that there's no fresh content coming from you on youtube. Anyways, thanks a ton for all that you are providing to the community!
great and thanks. and I'm spending most of my time building backtobackswe.com code-wise and building our content team. and sure - that's my goal
i mean WOW ! i was honestly struggling with my algorithm class this semester especially since its on zoom and the professor is all over the place and nothing made sense !!!!! but in just 36 minutes i understood what my professor tried to teach in 4 hours !!!!! so thank you so much ure a life saver ! would love to donate
sure thx
First time I ever saw ANYBODY even attempt to explain how we arrive at log n or n log n or all these math conclusions. And I mean even in texts supposedly written to help you understand algorithms. Most times the lecturers/writers just rush to the final result. Way to go brother!!
Thanks buddy! do try the 5 day free mini course or subscribe to our courses with 30% discount for some exclusive content b2bswe.co/3HhvIlV
why aren't your videos not mostly watched ?
This explanation is strongly etched into my mind .Even if forget in future how did it get that time complexity ,you gave me confidence to derive the whole process .Thank you
They are too long to go mainstream
This makes me furious and frustrated that professors get paid too much to not want to teach or to teach poorly. You are a life saver and an example of how professors SHOULD BE teaching for what we are paying them for.
You have taken the amount of time for me to understand merge sort from O(n!) to O(n*log(n)), thank you
can you explain why you have 1(n-1) instead of n on the right at 22:23
So we do (n-1) comparisons at that level with 1 subproblem.
you are amazing!! I'm planning to watch all your videos about sorts!!! Thank you so much for making this video. I can see the amount of effort that was put in to it!!!
great and thx
Terrific work, hats off to your way of explanation. I follow tons of youtuber. Nobody isn't close to your explanation approach or skill. Keep up the awesome work!
thanks
I've seen (and read) lots of explanations with complexity analysis of merge sort, but this is the one that clicked for me! Thanks for this wonderful explanation.
Hi guys, took me some time to understand at the end how the nlogn was extracted by the Σn.
its very simple, because 'i' is not there in the sum(Σn) you Just adding n, logn times(logn=times you split the problem or levels). So here the serie has 3 terms but he start to count from 0 to logn - 1, so he has logn sums of n, or
n + n +n =3*n=log(8)*n
=n*logn
im new to CS and try to Learn algorithms, great video man thank you very much!!
I watched the whole video at night and did not even feel asleep! So interesting!Thanks for sharing the knowledge😄
I got to say that you are super AMAZING!!!
My professor just skipped the total process....
like T(8)=T(n/2)+T(n/2)+(n-1) then bombed Worst case O(nlogn)
You completely fill out all my gap about why that is O(nlogn)
Thanks for you explanations. I am a student from germany. The content was also described in the script of my studies but your way to fill up this content with energy and a impressive way of didactics let me understand the topic. You have a sensitiv way to teach.
Really appreciate your patience and clear presentation. I understand why it's O(nlog n) after watching this video. In addition, I really love your clear pronunciation! Really really appreciate cus you do better than my college professor!
Sure
Holy Molly, you rocks, this is the best explanation for a student, which I can find on the internet!
After a couple of days and a lot of videos, finally I found a video that really help to understand the time complexity of merge sort. thank you !
No other video on the internet can describe this any better, huge respect for you
thanks
Thank you so much, I've never understood the analysis of Sorting Algorithms correctly but you gave a remarkable explanation on all my doubts on it.
thanks, nice
I love how you broke this down to the fundamentals. So helpful, I smashed the subscribe button so hard my clicker nearly exploded
bro, yore easily better than all my college teachers at explaining this, hell yeah im subscribing
welcome
My god, this is fantastic. I have ADHD but you present this in such a thorough and interesting way, it's not problem paying attention. Thanks so much!
I think I love you.... Or at least your explanations and fantastic teaching skills xD Please keep up the fantastic work. Very high-quality and helpful, unlike most resources I have looked at previously! I also appreciate you including the table of comments with the times. Subscribed :)
Table of Contents is critical. Thanks.
I thought I'd skip it once I feel lost, but it never happened, great job. Wish u more subscribers
This is literally by far the best explanation I have ever seen. Good going!
So clear, bro! Wonderful job, cannot wait to subscribe!
hey
You have a great talent for explaining these concepts. I wish this content would have been available last year when I was taking my algorithms class!
haha thanks
If I could like this video 10000 times, I would.. Thank you so much for the clear explanation !
Create a server farm and do it
This forest explanation is the best recursion call stack explanation of an algorithm on internet!
thanks lol
Hello guys , a little bit of help required,
But first I would like to thank the genius for explaining this video at another level. I have came to learn a lot of things which I didn't even know.
Doubt 1: I lost it at 22:10. one subproblem*(n-1)compsrisons. Why are we multiplying 1*(n-1) or 2(n/2-1) or so on...
I am trying to match the sequence with this formula T(n) = 2T(n/2) + (n-1). But I can't find the pattern.
Doubt 2: 30:10 The summation formula stands for (upper bound - lower bound) but he was adding extra +1 at the end. He did mention something about the bounds, but unfortunatly I did not get it which bonds he was talking about. Also 30:30 he multiplied n with the factor ( logn-1-0+1). Can anyone explain this to me ? please?
This is sooo informative. I finally understood Merge Sort and most importantly, why it has O(NlogN) time complexity. thank you so much ! :)
nice
I finally know why the time complexity of merge sort is nlog(n) now.....Thanks a lot!
I feel that my brain has expanded 10 fold by watching your video. Thank you!
sure
A true masterpiece of a video and a true masterpiece of a man. You are such a good teacher and I'm glad I can learn my University course of you! :)
Doing the math here was one of the high points of my review of computer science. One of the best videos because of the deeper understanding that is so effectively presented.
To the point well explained, couldn,,,'t imagine how 36 min goes so quickly
Awesome bro! I have never seen such a good explanation ever!
thanks and thanks
Each sentence was a little incoherent individually, but as a whole this was a pretty clear explanation. Definitely cleared it up for me.
That's the best explanation for any beginner to understand.
Great explanation. I got lost towards the last 6 minutes once the distribution started and couldn't follow anything after we arrived at n log n. :/ But will return to watch again :) great break down. Thanks.
thank you for this. what you are doing is really helping people. i think you know that, but still want to help confirm your work. thank you
This was so so helpful, thank you so much for putting in all the work required to make this video
So much effort in a video for merge sort
Very much so
i would say you still need to watch few other videos to understand the concept of merge sort and the code as well, however he did great job explaining some concepts in this video, its amazingly helpful
thanks :)
I understood why Merge Sort is O(n log n) in this way, and I want to ask if this reasoning is correct.
You can think of the O(n log n ) in a different way. In fact, on each level (0,1,2) where the list is divided into 4s, 2s and 1s, when we do the merge step, we compare EACH number of the level, first in the left side and then (when we are done with the left side of all levels) on the right side of the level. So at the end of the day all numbers of all levels will be merged; so the logic is:
For each level
all the n numbers are merged
The number of levels is obviously log(n), so we have to merge log(n) multiplied by n numbers.
obviously, in the merge sort we merge first the left side and then the right side, but this is the same as merging all numbers of the same level log(n) times.
Is it correct?
I thought your explanation of the big o complexity was superb. I really liked you worked through the proof and then did the mathematical proof and showed that using the formula got the right answer. Definitely pushed my understanding further there.
No one:
Lecturers(not everyone):
Me: This is how to put your effort in exemplifying down to the basics for the sake of learning!
thanks ahah
Superb video. A huge effort. Thanks.
Btw, can you do Master theorem? I find it a bit confusing.
thx and yeah
I always had tough time understanding time complexities but now it's all clear after watching your videos❤️
great
this was amazing, thank you so much. This video made me fall even deeply in love with CS and math!!
Thank you for your videos, they helped me a lot for my DSA exam
This channel is a goldmine 👌
Superb explanation
thanks
Just wow! This is a brilliant piece of material!
ye
Very clear and detailed. Great job.
thx
My ivy-league college professor couldn't help me truly comprehend this time complexity, but you did it. I hope they fire that professor and hire you instead.
haha thanks, means a lot. Would love some feedback on other content - backtobackswe.com/
Fantastic job !!
Have we ignored the time or amount of work required to split each array until the base array arrives?? Let's say if a million items are given as input, does the amount of time to split until base has any significant effect on total running time asymptotically?
We did do an asymptotic analysis
Understanding this concept finally in my 1000th video.
Great job. Appreciate the Big-O complexity details!
You've taken something that twisted my head to epiphany. Thank you so much!
I always wanted to know where this came from. Awesome way to teach. Great job.
Glad it was helpful!
Thank you, it was so didactic. I loved your explanation and could really understand what was going on.
Good job man ! , very neat and nice explanation.
thx
I am watching this in LockDown...... Awesome Explanation.
great
Thanks for the video. At 28:00 you say that base cases contribute 0 comparisons, however when you have two 1-element lists (base case) you still compare these 2 elements to find which is smaller so you can merge them into a 2-element list. Am I wrong ? Thanks in advance.
The base case is just an if statement that returns. You are talking about the merge right above the base cases I think
@@BackToBackSWE Thanks for reply. Yeah I figured it out, its just that in my mind I calculated the work done starting from one level below the one you did haha. But yeah total work level is the same, thank you.
This is exactly what it should be!
yup
this is the best explaination ever to anything!!
Hi, I am working on my Math IA (research project for IB HL Mathematics) for my High School Math course. For my project, I am trying to understand why Merge Sort has a big O notation of O(nlogn). Your video makes a lot of sense and really helped me understand most of the complicated concepts. Even still I am just a tad confused at time 28:10. You said Log(8)=3 but does that not assume that the base for the log is 2? Did I miss something in the video where you specified this? Also should the big O notation actually by O(nlog(base 2)(n)) and is instead simplified to just O(nlogn)?
"You said Log(8)=3 but does that not assume that the base for the log is 2?"
Yes.
"Also should the big O notation actually by O(nlog(base 2)(n)) and is instead simplified to just O(nlogn)?"
The base of the log does not matter since it is asymptotic. You can intellectually understand this, but you can take the actual limit to see this is the case (I forgot the math behind it, been 1 year since we did this in algos).
Could someone please point me to a resource that explains how we went from step 2 to step 3 at 30:15 ? Ive been out of school for quite a while, and just cant recall the reasoning behind doing (top bound - lower bound + 1). Thanks in advance!
Is this for the math part? Imagine it in your head and it'll help - if we want total items between 0 and 7 (inclusive of both 0 and 7), 7 - 0 gives us 7. But, there are 8 numbers, 0 1 2 3 4 5 6 7. So we add 1 since we excluded a bound. Or maybe Im talking about something else? I did this way back
@@BackToBackSWE Haha I figured it out right after I posted this. Thank you for getting back though, much appreciated!
Glad I found the explanation! This comment was very helpful.
Thanks a lot!
Brah. I've owned text books that don't go into this much detail. This whole thing is SO appreciated
24:30 🔥🔥🔥🔥🔥
nice
Is there an optimal sequence using which I can watch all the videos you've put up?
Just watch videos you are weak on We have a more category-based ordering on backtobackswe.com (paywall though)
Thank you so much for your detailed explanation!! It really helps a lot!!!!
I got so confused at 28:48 because I forgot that 'i' was above the first '2' and didn't see it due to the light there lol...
At 6:10 ... instead of saying literal ... consider the term 'abstraction' ..
I think telling people why computers require this simplicity may be a good idea...
as in, because you want unambiguous voltages and logic gates, etc, ...
Hi there, I have a question. I totally understand the complete mathematical way of getting the nlogn-n+1. However, for the T(n)=2T(n/2)+(n-1), this (n-1) means n-1 "comparison", but T(n) means total time used at this level. these 2 items have different unit, should we multiply (n-1) with a constant which stands for time cost of each comparison? Kindly help clarify. Thank you sir
I genuinely want to send over something to you on teacher's day
That is the hardcore explanation of O(logn).
where can i read up on summation about (top - lower bound ) + 1 , u can do that for summations? at 30:05
What is the question?
@@BackToBackSWE What rule allow us to do (top - bottom) bound + 1 for summations ? I never done this in summation before where i can just subtract the bounds? I want to read up on it.
Oh nevermind , were just finding out how many times summation runs. Thanks , i wasn't paying attention.