I've watched about 6 videos on Quicksort. This one is really the best because it first explains the theory and then the in-place algorithm, where as most other videos only explain one or the other but algorithm is confusing if you don't understand the theory behind it. Thank you for this post. The reversed on-glass writing is kinda cool as well. Kudos.
Did you really believe that he was writing inverse? And His left-hand writing is just coincidense then? Don't be naive! The video is mirrored obviously!
Can you please help me with Sorting a Singly Linked List using Quick Sort. Please whatapp me if you can help me +919041121318 or mail me at mann.ramin@gmail.com. Thanks In advance..
I have been through video after video, website after website and NONE of them were able to help me understand quicksort. Within the first 2 minutes of this video it all made sense. THANK YOU!!!
I feel like I watched 10 other videos and read a few articles about this but this finally got it through my head properly. This is really something that needs to be explained just like this to understand. I was getting far to bogged down with the recursion element to fully grasp the simplicity of this algorithm. This is a great explanation because it really just boils it down to what is actually happening, and the logic. Rather than getting encumbered by the actual implementation in a particular language.
@@manuelfideles9468 no, the learning glass aka Lightboard does not reverse the image in real time. "...The lecturer writes on the glass surface with fluorescent markers while the session is recorded...Because any written text will be backward in the direct camera view, the text orientation must be flipped, either by pointing the camera toward a mirror reflecting the Lightboard and the presenter or by digitally reversing the image..."
Clear. Concise. To the point. Will take a few watches but it was so clear and made so much more sense than what was taught in my algorithms class at school , lol.
Using the last element as a pivot is necessarily not a good option if there is even a slight chance that the list could be (nearly) sorted. A good option for pivot selection is the median-of-three method in which you choose the median of the first, middle and last element of the list as your pivot. This leads to efficient behaviour for all inputs.
Describe precisely the pivot step of QuickSort, using the median-of-three method for pivot selection, and show every stage of the rst pivot step applied to the array with the following entries: 3; 4; 7; 1; 2; 6; 5
Great video. I was a bit skeptical when you mentioned your reasoning to pick the mid point as the first pivot in a randomly sorted list, but at the end it was a misdirection. The only thing I would add is maybe a bit of pseudo-code, since it might be better to demonstrate the recursiveness.
Why would you be skeptical of choosing the middle as the pivot? That's literally the best possible outcome, lol! Unless your goal is worst case O(n^2) you should always choose the middle unless you know something about the list (as in some special case where it's always x).
This guy is awesome, I'm learning sorting algorithms thanks to him. One day baby I'll be sorting integers at Microsoft! _function quickSort(array) {_ _if (array.length
In practice, the number of times you ever need to sort a list of pure numbers is small. It's far more common that you need to sort some structured data, where there's some item within the structure that is the sort key. When I started programming 40 years ago, it was reasonably common to hand code a sorting algorithm for some application, now every modern language comes with a Quick sort algorithm that you no longer need to worry about. How it works is of purely academic rather than practical interest.
3:41 wouldn't you have to quicksort one more time since it's not guaranteed at that point that the remaining list is sorted? The list could still be [12, 11] instead of [12, 14] at that point.
How can we exactly count the number of comparisons? I establish a counter for 10000 number am I obtain 9999. If I consider the recursion -1 each time the numbers goes to 12K. Depending of the start or end or media election differs too.
So the swapping of 6 and 8 is not required. Just use the last element in the list. I think this is the inplace quick sort using Lomuto partition schema.
They are filming a mirror. He is writing normally in a glass (so everything is backward) and they are filming a mirror pointed to it (making it forward again).
4:08 if the numbers are randomly sorted then, any number in the list has the same probability of being in the middle of the sorted list... so you could just pick the number of the very right no? Edited: 8:38 lol he answered my question by the end of the video :)
The comments here: 🤯 I was much more amazed by how he was able to disappear and then reappear in almost the same place! Then I realised, this must be what recursion is... I am learning!
but what about array of |8|10|7|12| , out pivot is |12|, i and j counters in this case will go together until the end, coz all elements are smaller than pivot. And in the end we should switch |7| with |12|, isn't it? but we will get then |8|10|12|7| , which is far from true. Somebody explain me please this moment
Actually in that case counter who is remembering current posn will remain at 8 and other counter which is finding 1st element greater than 12 will iterate and end the array nothing will happen. And in next step you will send arr 8 10 7 in recursion and 12 in recursion
I believe I've found an answer here, having encountered the same confusion when reviewing this myself. When you have this scenario, you simply do not perform a swap at the end. The final value before the pivot value is considered to be in its "sorted" position. From there you can mark the final value sorted and continue the process with a new pivot.
is he implying that the middle number of an unsorted list is better than any other as a pivot choice as it is likely to be nearer the median than the others?
I still don't understand why choose the middle number as pivot point and then swap it with the end number in the almost sort list? Am I miss something?
That is confusing, he shouldn't have said that. You actually simply choose the last number as pivot. And you do that so that you can freely move all the other numbers around. And then at the very end, when you have the set of small numbers and the set of large numbers, you put the pivot between the two sets.
@@icosmini it is not confusing actually you can chose any number as a pivot, then have to swap it with the last one ,, choosing last one as a pivot is convenient . pivot means here that you have to place this element at its right place and left elements must be smaller and right must be bigger
Something does not appear to be correct here or maybe I am misunderstanding. With the 8, 10, 7, 12 sort you would do if you had continued this example, all the elements are less than the pivot (12). Your blue/orange counters would stay together until the end, resulting in a swap of 7 and 12, resulting in 8, 10, 12, 7. This is not correct. Is there some gotcha or small detail here that I am missing in which the result would come out correct? Thanks!
>resulting in a swap of 7 and 12 You would end up with swapping (12 with 12) nothing BUT! You would have a new pivot winch is 3(12). End the next iteration would be: leftSort(0, 3 - 1), rightSort(3 + 1, 3)
I've watched about 6 videos on Quicksort. This one is really the best because it first explains the theory and then the in-place algorithm, where as most other videos only explain one or the other but algorithm is confusing if you don't understand the theory behind it. Thank you for this post.
The reversed on-glass writing is kinda cool as well. Kudos.
agreed!!! holy god this is mind blowin. great work sir!!
Did you really believe that he was writing inverse?
And His left-hand writing is just coincidense then? Don't be naive! The video is mirrored obviously!
Can you please help me with Sorting a Singly Linked List using Quick Sort. Please whatapp me if you can help me +919041121318 or mail me at mann.ramin@gmail.com. Thanks In advance..
exactly!!
Wow. This should be the #1 search result for quicksort in UA-cam. Understood it, and am now going to code it!
Beni D agree, all others are very confusing.
The only Quicksort vid that was Quick to understand ❤️
teaching style is awesome.
I have been through video after video, website after website and NONE of them were able to help me understand quicksort. Within the first 2 minutes of this video it all made sense. THANK YOU!!!
Bro you are the best ! Man literally watched 7 videos to understand this method but your video is the one to understand this method
I feel like I watched 10 other videos and read a few articles about this but this finally got it through my head properly. This is really something that needs to be explained just like this to understand. I was getting far to bogged down with the recursion element to fully grasp the simplicity of this algorithm. This is a great explanation because it really just boils it down to what is actually happening, and the logic. Rather than getting encumbered by the actual implementation in a particular language.
Am I the only one who is impressed not only with his algorithmic interpretation, but also with his digital whiteboard
I think he uses translucent/noctilucent board markers.
I just spend the first 2 mins trying to figure out how they filmed it XD
probaly a transparent wall and mirorred video by edit
it's called learning glass, it reverses the image in real time. No editing whatsoever
@@manuelfideles9468 no, the learning glass aka Lightboard does not reverse the image in real time. "...The lecturer writes on
the glass surface with fluorescent markers while the session is recorded...Because any written text will be backward in the direct camera view, the text orientation must be flipped, either by pointing the camera toward a mirror reflecting the Lightboard and the presenter or by digitally reversing the image..."
First time I was same )
Glass wall and video mirroring
Edit: spelling
Best explanation I've found so far!
One of the best explanations of Quick Sort. Thank you !
I'm Studying here in Sandiego SouthWestern College, Dr. Edwards you inspire me to transfer over SDSU to finish my Computer Science degree
Amazingly done... my own lecturer left me more confused than before when he spoke about it
Wow. Best Quick sort explanation. Deserves more views
Clear. Concise. To the point. Will take a few watches but it was so clear and made so much more sense than what was taught in my algorithms class at school , lol.
This was the best way to learn it, I'm Mexican and my teacher is so bad, thanks to you teacher Rob
swop
It seems correct even though it sounds weird
Its an optimized version of swap. Performs at least 10 times faster
He is British.
I was like "why is he making fun of how he says swap" and then it hit 6:29 and I understood what you were referring to XD
These videos have helped me through my data structures courses IMMENSELY.
Best explanation on UA-cam. Thanks for this amazing content.
This is the best explanation I have seen so far.
Best explanation of quicksort I have found so far
I finally understood after watching this and was able to implement the algorithm. Thank You!
You can tell dropping that lid really bugged him
Thanks Dr.Edward This video is really clear. I had a hard time in class to understand this.
thank you, this is the best quick sort i have seen, thanks.
This guy is creepily good at writing backwards...
I hope you're kidding. lol
@@jrhager84 No? Am I missing something?
Oh, did they just mirror the video?
@@tsukikage bingo
Thanks a lot Rob for all your hard work and making it easy to understand... Really appreciated ... :)
Your teaching method is really cool, and makes the viewer really comfortable. It's amazing how you write inverted symbols on your side :-D
This should be at the top of the search list.
Thank you, been trying to understand this for 4 videos including my instructor. Good Job.
All the videos are different. Wtf? Now what?
You're brilliant! Best explanation so far.
This is the best video on quick sort!
THE BEST EXPLICATION FOR QUICKSORT!! THANKS
Excellent method of teaching. Every one can easily understand
Best explanation of quick sort I have found! Thank you.
Using the last element as a pivot is necessarily not a good option if there is even a slight chance that the list could be (nearly) sorted. A good option for pivot selection is the median-of-three method in which you choose the median of the first, middle and last element of the list as your pivot. This leads to efficient behaviour for all inputs.
Well done and nice job with the reverse writing. That made the video really viewer friendly.
Best quicksort video ive seen.
Describe precisely the pivot step of QuickSort, using the median-of-three method for
pivot selection, and show every stage of the rst pivot step applied to the array with the
following entries:
3; 4; 7; 1; 2; 6; 5
Thank you professor!! This is really clear and understandable, I now understand how partition work and how it works with pivot point.
This was a great video! Actually managed to follow through your method and stopping to code each step that you explained. Thanks :)
8:50 yes, but if the list is sorted, then the middle is better.
Thank you so much for your videos. You have a talent to explain things in easy way!
Best video...... finally understood the concept... thanks sir
best explanation I saw so far
Great video. I was a bit skeptical when you mentioned your reasoning to pick the mid point as the first pivot in a randomly sorted list, but at the end it was a misdirection. The only thing I would add is maybe a bit of pseudo-code, since it might be better to demonstrate the recursiveness.
Why would you be skeptical of choosing the middle as the pivot? That's literally the best possible outcome, lol! Unless your goal is worst case O(n^2) you should always choose the middle unless you know something about the list (as in some special case where it's always x).
This guy is awesome, I'm learning sorting algorithms thanks to him. One day baby I'll be sorting integers at Microsoft!
_function quickSort(array) {_
_if (array.length
In practice, the number of times you ever need to sort a list of pure numbers is small. It's far more common that you need to sort some structured data, where there's some item within the structure that is the sort key. When I started programming 40 years ago, it was reasonably common to hand code a sorting algorithm for some application, now every modern language comes with a Quick sort algorithm that you no longer need to worry about. How it works is of purely academic rather than practical interest.
Thank u for ur great explanation, got it from the very first time
3:41 wouldn't you have to quicksort one more time since it's not guaranteed at that point that the remaining list is sorted? The list could still be [12, 11] instead of [12, 14] at that point.
That's the only problem in quick sorting, but it happens rarely that's why quick sort is being used mostly
Kurt Weyne Gaso don’t think that’s a problem with the algorithm itself they just forget the last iteration
@@RickAstley1988 i don't think people use "sorting algorithms" with small chances to just return unsorted data..
I would give 10 likes if I can for this video!
Very well explained! Thank you!
How can we exactly count the number of comparisons? I establish a counter for 10000 number am I obtain 9999. If I consider the recursion -1 each time the numbers goes to 12K. Depending of the start or end or media election differs too.
Thank you for this wonderful explanation!
So the swapping of 6 and 8 is not required. Just use the last element in the list. I think this is the inplace quick sort using Lomuto partition schema.
how are you writing backwards!?
He's writing on a glass.
They are filming a mirror. He is writing normally in a glass (so everything is backward) and they are filming a mirror pointed to it (making it forward again).
or theyre just flipping the video in post
@@hussainm8407 BAHAHA xD
sorcery
4:08 if the numbers are randomly sorted then, any number in the list has the same probability of being in the middle of the sorted list... so you could just pick the number of the very right no? Edited: 8:38 lol he answered my question by the end of the video :)
Thanks.
Notes: Partition algorithm at around 5:00
Awesome!
Very short and to the point.
The comments here:
🤯 I was much more amazed by how he was able to disappear and then reappear in almost the same place!
Then I realised, this must be what recursion is...
I am learning!
Very good explanation! Thank you very much :D
but what about array of |8|10|7|12| , out pivot is |12|, i and j counters in this case will go together until the end, coz all elements are smaller than pivot. And in the end we should switch |7| with |12|, isn't it? but we will get then |8|10|12|7| , which is far from true. Somebody explain me please this moment
Watch the vid agin .we skip through the i(update it by 1) when element(i)>pivot.so swaps take place before pivot and element(j )swap.
Actually in that case counter who is remembering current posn will remain at 8 and other counter which is finding 1st element greater than 12 will iterate and end the array nothing will happen. And in next step you will send arr 8 10 7 in recursion and 12 in recursion
I believe I've found an answer here, having encountered the same confusion when reviewing this myself. When you have this scenario, you simply do not perform a swap at the end. The final value before the pivot value is considered to be in its "sorted" position. From there you can mark the final value sorted and continue the process with a new pivot.
really great work . It felt like listening to the John Danaher of sorting xD
SUPER HELPFUL!!! THANK YOU SO MUCH
is he implying that the middle number of an unsorted list is better than any other as a pivot choice as it is likely to be nearer the median than the others?
Thank you! Its a great mini lecture)
Quite unruffled after the pen lid dropped. Very cool
Geniusz dydaktyczny. Brawo.
Thanks a lot!
Also for no annoying music!
i can't get, what is the second part about?
First value is taken j last value is pivot is taken if first value j is less then pivot what we do and i is taking increment to the j
I do have to say this algorithm is just slightly different than some other youtube videos :P. Great video!
I don't understand 5:18. what if it wasn't a 10 but a 1? where would you swap that to?
Great explaination and u r sophisticated person
The partitioning algorithm is not optimal. If an array is in descending order the swap would do unnecessary job.
am too lazy in writing a comment but this tutorial made me do that! THANKSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Thankyou! you made this concept easy to grasp
Greetings from Peru. Awesome videos!
Superb explanation 🙏🙏
beautiful explanation!
Excellent explanation.
Excellent explanation
Thanks, this made it so clear.
The sound made between the pen and the glass...
What sorcery is this
Best explanation
Thank you sir
Great work😊
how come the video was captured?.. he seemed writing in air, and he is facing opposite to us
Very good lessons. Thank you!!!
'crystal' clear.
Seems a lot easier to just do a normal sort smallest to largest. Don't understand the reason for the complexity.
Very helpful, thank you! :)
best quick sort thanks
great sir!! KEEP IT UP!
LOL WOW IS HE WRITING BACKWARDS?
I still don't understand why choose the middle number as pivot point and then swap it with the end number in the almost sort list? Am I miss something?
That is confusing, he shouldn't have said that. You actually simply choose the last number as pivot. And you do that so that you can freely move all the other numbers around.
And then at the very end, when you have the set of small numbers and the set of large numbers, you put the pivot between the two sets.
@@icosmini it is not confusing actually you can chose any number as a pivot, then have to swap it with the last one ,, choosing last one as a pivot is convenient . pivot means here that you have to place this element at its right place and left elements must be smaller and right must be bigger
right place means where it should be .
that will help alot if you sorting nearly sorted set where there will be less swaps mostly if you use the mid number
middle is for the meaning, the last is for the implementation
THANK YOU SIR
great video but the list is not sorted lol 9:00
Thank you!
Something does not appear to be correct here or maybe I am misunderstanding. With the 8, 10, 7, 12 sort you would do if you had continued this example, all the elements are less than the pivot (12). Your blue/orange counters would stay together until the end, resulting in a swap of 7 and 12, resulting in 8, 10, 12, 7. This is not correct. Is there some gotcha or small detail here that I am missing in which the result would come out correct? Thanks!
>resulting in a swap of 7 and 12
You would end up with swapping (12 with 12) nothing BUT! You would have a new pivot winch is 3(12). End the next iteration would be:
leftSort(0, 3 - 1),
rightSort(3 + 1, 3)
THANK YOU
BEST OF THE BEST !