Quick sort in 4 minutes

Поделиться
HTML-код
  • Опубликовано: 20 авг 2024

Комментарии • 534

  • @WhisperingWalnuts
    @WhisperingWalnuts 2 года назад +268

    This is great video! but, I feel the algo provided in the end is not the same as the way he was explaining.. I went ahead and wrote my code for it same way he explained:
    ```
    class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
    def quicksort(nums, lo, hi):
    if lo < hi:
    partition_resting_point = partition(nums, lo, hi)
    quicksort(nums, lo, partition_resting_point - 1)
    quicksort(nums, partition_resting_point + 1, hi)
    def partition(nums, lo, hi):
    pivotIdx = random.randint(lo, hi)
    nums[pivotIdx], nums[hi] = nums[hi], nums[pivotIdx]
    pivot = nums[hi]
    l_idx = lo
    r_idx = hi-1
    while l_idx

    • @MichaelSambol
      @MichaelSambol  2 года назад +53

      Yeah, in the early days I didn't spend enough time on pseudocode. Trying to fix that now by building out this repo: github.com/msambol/youtube/blob/master/sort/quick_sort.py. Thanks for the feedback!

    • @westsideslasha
      @westsideslasha Год назад +22

      ​@@MichaelSambol I got really confused when the pseudocode didn't match the explanation. You should correct that (in the video) ASAP.

    • @MichaelSambol
      @MichaelSambol  Год назад +57

      @@westsideslasha I'm sorry about that! RUclips won't let me change the video now unfortunately, but I pinned this comment.

    • @manavshah448
      @manavshah448 Год назад

      I am encountering an infinite loop if I change the while condition to be i < j instead of

    • @amono770
      @amono770 Год назад +4

      i am glad that i looked at the comment section after having a hard time connecting the pesudo code to the video content.

  • @EchoVids2u
    @EchoVids2u 4 года назад +4532

    With every new quick sort video, I watch, I get more recursively confused.

    • @Iceron55
      @Iceron55 3 года назад +101

      same lol all the quicksort videos use the same words to explain it

    • @user-wp9pz9hl3z
      @user-wp9pz9hl3z 3 года назад +24

      hey man, after pulling my hair out for 2 days I finally got it, sadly I had to pay for it.

    • @HACKINGMADEFUN
      @HACKINGMADEFUN 3 года назад +2

      @@user-wp9pz9hl3z what did u pay for?

    • @user-wp9pz9hl3z
      @user-wp9pz9hl3z 3 года назад +5

      @@HACKINGMADEFUN a Udemy course

    • @HACKINGMADEFUN
      @HACKINGMADEFUN 3 года назад +2

      @@user-wp9pz9hl3z cool

  • @jonahrivera7
    @jonahrivera7 3 года назад +727

    Guy: "I think you understand the concept"
    Me: No I don't

    • @Evokans
      @Evokans 3 года назад +2

      it gets halved and is recursively applied to both halves in each step

    • @sleevman
      @sleevman 3 года назад +1

      @@Evokans um what?

    • @faith2756
      @faith2756 3 года назад

      @@sleevman It gets repeatedly done on each new half, as after each half the pivot is in the right place, so a new pivot is used.

    • @sleevman
      @sleevman 3 года назад

      @@faith2756 sorry wat?

    • @faith2756
      @faith2756 3 года назад

      @@sleevman Which part exactly do you not understand?

  • @SAMURAIch
    @SAMURAIch 4 года назад +485

    I feel so dumb when i don't understand this, but then i just scroll the comment section and realise that im not alone lol

    • @liuqing1995
      @liuqing1995 3 года назад +3

      understanding the meaning of pivot is the KEY.

    • @reguret2976
      @reguret2976 Год назад +11

      yeah, theitemfromleft, or right wasn't even properly discussed, left of what or right of what exactly?

    • @skyness9
      @skyness9 4 месяца назад

      lol

  • @alanfender123
    @alanfender123 5 лет назад +1909

    i should be working at mcdonalds

    • @SkillUpMobileGaming
      @SkillUpMobileGaming 4 года назад +5

      You really should. *SAD!*

    • @IStMl
      @IStMl 4 года назад +134

      @@SkillUpMobileGaming You too

    • @torment6425
      @torment6425 4 года назад +1

      wait what. why

    • @asailingstone
      @asailingstone 4 года назад +6

      lol 😂😂😂

    • @web-unlocked
      @web-unlocked 4 года назад +4

      that's what I was thinking. you're a genius pal

  • @yufangjuan4994
    @yufangjuan4994 3 года назад +159

    To ones without enough background knowledge, this video omits details of execution of each step. But to ones with, this is concise and covers sufficient key points of quick sort. Thanks a lot for your video sharing.

    • @noahdirksen3623
      @noahdirksen3623 2 года назад +44

      Thats the fanciest wording I've heard, i would use: "You get it or you dont"

    • @seanzhou2188
      @seanzhou2188 Год назад +1

      Try to sort a few short sequences yourself according to the steps in the video. You may get the "background knowledge".

  • @theducksneezes4987
    @theducksneezes4987 4 года назад +141

    How to get Confused in 4 minutes
    then again, this was the best video about it so far

    • @4TH4RV
      @4TH4RV 4 года назад +1

      I want more videos like this where they explain stuff in less than 10 minutes

    • @omegagmysta2092
      @omegagmysta2092 4 года назад +1

      Bet ? ruclips.net/video/Zh37XyQLHkw/видео.html

    • @JoelThomas-sr6ti
      @JoelThomas-sr6ti 4 месяца назад +1

      there's a video by abdul. i think it is best

  • @Charoula1608
    @Charoula1608 6 лет назад +594

    *screams in Ross voice* PIVOT! PIVOT! PIVOT!

    • @peizhiyan2916
      @peizhiyan2916 5 лет назад +4

      haha, I can't help imaging Ross's face, hahaha

    • @Daver2212
      @Daver2212 5 лет назад +1

      Me in future, oh Ross's couch sort?

    • @Jiwoo15
      @Jiwoo15 5 лет назад +11

      screams in Chandler voice SHUT UP! SHUT UP! SHUT UP!

    • @mahnazha
      @mahnazha 5 лет назад

      Oh my GOOOOD :-))))))))))))) So truuuuueeeeeee

    • @AbdelhameedG
      @AbdelhameedG 4 года назад +1

      This is exactly what came into my mind learning about this :))

  • @banderson924
    @banderson924 5 лет назад +1251

    So we let magic handle the rest.

    • @Bridgelessalex
      @Bridgelessalex 5 лет назад +43

      HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA

    • @airex12
      @airex12 5 лет назад +13

      After you swap itemFromLeft and the pivot at the end, itemFromLeft is now at the end of the array. So, use that as the *new* pivot.
      Repeat that until its sorted.

    • @kennethquilantang8080
      @kennethquilantang8080 5 лет назад +1

      @@airex12 so 8 is the new pivot? How can I go through if there is no number in the array greater than 8?

    • @airex12
      @airex12 5 лет назад +11

      @@kennethquilantang8080 after 7 is put in its correct position, remember that all numbers to the right of 7 are greater than 7. In this case, there is only one number - 8. A partition with just one number is already sorted, so you can ignore it and move on to sort [6,5] to the left of 7.
      For sorting [6,5] choose 5 as the pivot. itemFromLeft is therefore 6, and itemFromRight has no value because no number in the array smaller than 5. Therefore, we can stop and swap itemFromLeft and the pivot to leave [5,6].
      Yes, the video is unclear because it does not explain these cases. The point is that each time you put the pivot into it's correct position, you have "split" the array into two parts - one part has all numbers bigger than the pivot and the other part has all numbers smaller than the pivot. Parts with *just one* element are already sorted. If a part is already sorted, no itemFromLeft can be found. If a part is unsorted, you are guaranteed to find an itemFromLeft, and if the index of itemFromRight < the index of itemFromLeft *OR* itemFromRight does not exist then you can swap itemFromLeft and the pivot to put the pivot into its correct position in the whole array.

    • @kennethquilantang8080
      @kennethquilantang8080 5 лет назад

      @@airex12 I get your point bro thanks but what would be the next step. Will I need to pick another pivot? How can I sort the rest?

  • @wendyd.1918
    @wendyd.1918 3 года назад +44

    I study computer science, and once, I had an exam with a few sort algorithms in it. I didn't really study but about twenty minutes before the exam I watched your 2-4 minute videos on these sort algorithms and I passed the exam. Thank you for helping me.

    • @fireboywatergirl1625
      @fireboywatergirl1625 8 месяцев назад +2

      thats gonna b me td lmao

    • @wendyd.1918
      @wendyd.1918 8 месяцев назад

      @@fireboywatergirl1625 i am sure you are at the right place.

  • @fr5229
    @fr5229 7 лет назад +71

    This is great. The simple explanation and the especially simple pseudocode towards the end makes it easy to understand the core concept of the algorithm.

  • @LL-rn8rn
    @LL-rn8rn 5 лет назад +290

    The psudocode is not intuitively reflecting the walkthrough

    • @diabl2master
      @diabl2master 4 года назад +3

      I've been looking at it for a few minutes now, and I can believe that this pseudocode is accurate, but I'd have to check the details of what the partition function is doing to be sure, but it seems legit. Assuming your language of choice will permit a self-referential function like that.

    • @jscholex
      @jscholex 4 года назад +13

      @@diabl2master The recursion is fine... he's talking about how `partition` is putting the pivot on the left wall instead of the right. In the video the pivot is on the right side.

    • @diabl2master
      @diabl2master 4 года назад

      @@jscholex That would be a failure of technically reflecting, not intuitively reflecting, the walkthrough. I'm not sure OP was referring to that, but who knows.

    • @jscholex
      @jscholex 4 года назад

      @@diabl2master Yeah who knows... but I think we can all agree the pseudocode isn't great hah

    • @skarfie123
      @skarfie123 3 года назад +8

      the pseudocode shows the Lomuto version but the visualisation is for the Hoare version, which is better. See Wikipedia for both.

  • @LGNNorotic
    @LGNNorotic 4 года назад +96

    you should put the code next to all of the visual aids and highlight each line as its being done in the visual. thanks for the help with sorting!

  • @sachinpathy6940
    @sachinpathy6940 2 года назад +6

    i put this at 1.5x and now i learnt quick sort 2.6667 minutes

  • @nabe4320
    @nabe4320 6 лет назад +612

    am still confused

    • @ibu433
      @ibu433 5 лет назад +31

      N Betancourt cuz the way he explains it IS confusing
      I’ve watched this a couple of times, thought I understood went to the exam and screwed up
      Now that I’ve watched other videos I understand that the way he explains it is confusing

    • @thewiseowl8804
      @thewiseowl8804 4 года назад +5

      N Betancourt He made it more confusing, for sure.

    • @diabl2master
      @diabl2master 4 года назад +3

      He didn't explain what quick sort does in general, what it can be applied to, and left some holes in the explanation that someone with no experience would struggle to grasp. Which is a shame.

    • @omegagmysta2092
      @omegagmysta2092 4 года назад

      Hope this helps :ruclips.net/video/Zh37XyQLHkw/видео.html

    • @alvin_row
      @alvin_row 3 года назад +1

      i hope you got it cute bird from nichijou

  • @emilgebl8644
    @emilgebl8644 4 года назад +67

    If anyone is confused at the 1:10, basically he doesn't go through the loop.
    Instead he jumps to when item from left is higher or item from right is smaller etc. There is a left and right pointer that checks for the condition and then left++ or right-- if its not correct.
    itemsfromRight goes from 1 cuz its smaller, and then the right-- checks 7, not smaller, right--, checks 8 not smaller, right-- and then it checks the 0 and see that its smaller.

    • @christianeichmueller8637
      @christianeichmueller8637 Год назад

      Thanks for the explanation!

    • @jamboy1843
      @jamboy1843 Год назад

      what the hell are you talking about this is a church sir

    • @emilgebl8644
      @emilgebl8644 Год назад +3

      @@jamboy1843 I don't even remember making this comment.

  • @snake3276120
    @snake3276120 3 года назад +1

    LOL this is one of the best and easiest video out there on quick sort. All of you disliking it shouldn't do programming.

  • @yessirski7868
    @yessirski7868 4 месяца назад +1

    people are complaining but this is gonna come in clutch for my wirtten exam tmr.

  • @parthpatel-bt7qw
    @parthpatel-bt7qw 6 лет назад +10

    This was exactly the kind of video I was looking for!! Short and concise, but no loss of information. Thank you.

  • @brianmartinez6193
    @brianmartinez6193 2 года назад +1

    I watched several videos, including my school books, and I had no idea what they were saying with left to right and could not get the answers in the correct order because of that. I was able to understand after watching your video and it allowed me to get past my assignment. Thank you.

  • @Kleyguy7
    @Kleyguy7 3 года назад +12

    I think I'm here for the fourth time now.

  • @nemesis9410
    @nemesis9410 5 лет назад +260

    This is the most confusing and incoherent visualization of quicksort I've ever seen

    • @thewiseowl8804
      @thewiseowl8804 4 года назад +2

      Well said 👍

    • @ChristianMay21
      @ChristianMay21 4 года назад +6

      Makes perfect sense to me

    • @thewiseowl8804
      @thewiseowl8804 4 года назад +2

      Christian May That’s so great! 🙌👏

    • @diabl2master
      @diabl2master 4 года назад +13

      I thought the visualisation was fine. I feel that I understand it now.

    • @cristian-bull
      @cristian-bull 3 года назад

      This is the fist visualisation of quick-sort I've ever seen, so I know it doesn't mean much, but I agree.

  • @Shivam25Verma
    @Shivam25Verma 2 года назад +1

    Thank u very much Sir, I got it completely. Actually I'd missed my college online lecture b/c of sleeping... U saved me just night before exam, as urs is the shortest video on YT.

  • @MewPurPur
    @MewPurPur 3 года назад +3

    Yess I finally understood it, having a clear mind the morning before the exam helped

  • @chinmayhattewar4456
    @chinmayhattewar4456 3 года назад +34

    Imagine newcomers watching this explanation for the first time.

    • @BethanyLowe8773
      @BethanyLowe8773 3 года назад +1

      Thank you. I feel the same about my actual online course I'm studying. And I'm a newcomer. I feel better.

    • @krishnarajj9358
      @krishnarajj9358 3 года назад +1

      horrible

  • @dh7222
    @dh7222 8 лет назад +85

    These are some clean tutorials. Thank you for making this!

  • @lemonw3906
    @lemonw3906 4 года назад +19

    The pseudocode is hard to read, but the variable name "leftwall" is really good, this gives me a vivid concept of how the leftmost larger item was swapped and the "wall" moved.

    • @hiteshsahu_
      @hiteshsahu_ 2 года назад +9

      pseudocode is actually wrong as well !

    • @blurryhorizon
      @blurryhorizon 2 года назад +4

      @@hiteshsahu_ Exactly, not only 1 pointer moves & stopping when this 1 pointer reaches end of the array, but also only picking leftmost value as pivot

    • @Kokil92341
      @Kokil92341 2 года назад +3

      @@hiteshsahu_ Exactly , i have wasted so much time over it

    • @scarlettwang2146
      @scarlettwang2146 2 года назад

      ​@@blurryhorizon I suppose that in the Partition function, the "pivot = A[low]" should actually be "pivot = A[high]"? Very confusing so I wrote it down and found out that the pseudocode doesn't work properly. // Oh just realised that although pivot = A[low] might works as well but the pseudocode is totally wrong for Partition function jeez..

    • @kemot25
      @kemot25 Год назад

      @@scarlettwang2146 I think it should be as it is. Something else is wrong.

  • @mehdibadaoui1658
    @mehdibadaoui1658 4 года назад +3

    when i search for something on youtube and see one of your videos in the results i genuenly get excited

  • @HelloWorld-tn1tl
    @HelloWorld-tn1tl 3 года назад +1

    This is the first video that made me really understand how to impl quicksort, and it's very short.

  • @baribari600
    @baribari600 6 дней назад

    "let's let recursion handle the rest" > "here's the rest of the owl"

  • @ganimatormusic
    @ganimatormusic Год назад

    Thank you so much, i have a pc science test today, and i didn'T understand since i can't speak german that well and i am still learning it, this guy explained it all

  • @ToriliaShine
    @ToriliaShine 2 года назад

    thank u so much, i have an exam tommorow and was stressing bc i couldnt figure out how quick sort work with my teacher's explanation and this just simplified it easily. tysm ;-;

  • @devanshityagi8231
    @devanshityagi8231 5 лет назад +3

    Wow... You just found a place in my mind where you stored quick sort so deeply.🙋💖😂

  • @godaimer999
    @godaimer999 2 года назад

    explained it much fckin better in 4 minutes with 1.5x watchspeed than my teacher in a 90 minutes class, thank you sm

  • @mirana7660
    @mirana7660 2 года назад

    it's 8:48 AM, i have an exam at 15:30 PM and ur saving me here

  • @noddycode7324
    @noddycode7324 5 лет назад +2

    QuickSort has always been a bit of a mystery to me, but somehow this video instantly made it click. Thank you so much!

  • @okaydayy
    @okaydayy 4 года назад +1

    That is the exact! same Quick Sort Algorithm we have been thought. Really good! Thanks

  • @prohakerofficial
    @prohakerofficial Месяц назад

    Very good video, I learned quick sort easily thanks to this. Although, I did have to rewatch the "median-of-three" explanation.

  • @chetanphoenix
    @chetanphoenix 3 года назад +5

    I really like this explanation. This moves the pivot out of the way and swaps it back with the itemFromLeft pointer. That's so much easier than some other videos I've seen where the pivot is in the middle of the action and we're confused with >= or

    • @ggg-tq9be
      @ggg-tq9be 2 года назад

      yes! It is cool!

  • @M15onehundred
    @M15onehundred 5 лет назад +8

    Nice! Glad to see magic still exists!

  • @DT-ll8og
    @DT-ll8og 2 года назад

    Thanks for clear explanation. Correct Position for Pivot, let recursive do remains. Good job man.

  • @seltonmc
    @seltonmc 2 года назад

    Your short videos helped me a looot. Thank you so much!

  • @Crzynoob
    @Crzynoob 5 лет назад +23

    Psuedo code does not match demonstrated algorithm.

  • @smbowner
    @smbowner 5 месяцев назад

    Hey, Thanks for the explanasion, It was a clear and concise video, however the pseudocode is somewhat wrong I believe in 3 things:
    In Partition, the order of operations is not correct: increment leftwall first, then swap.
    The final swap in Partition is not correctly swapping the pivot's original position with A[leftwall].
    The recursive calls in Quicksort should be updated to exclude the pivot_location from the ranges, properly dividing the array into segments that exclude the sorted pivot.
    here is the corrected version:
    Quicksort(A as array, low as int, high as int)
    if (low < high)
    pivot_location = Partition(A, low, high)
    Quicksort(A, low, pivot_location - 1)
    Quicksort(A, pivot_location + 1, high)
    Partition(A as array, low as int, high as int)
    pivot = A[low]
    leftwall = low
    for i = low + 1 to high
    if (A[i] < pivot) then
    leftwall = leftwall + 1
    swap(A[i], A[leftwall])
    swap(A[low], A[leftwall])
    return(leftwall)
    Thanks again!

  • @lil-mi-777
    @lil-mi-777 2 года назад

    The video hold the key of quicksort, most clear to me!

  • @ragavendhart
    @ragavendhart 5 лет назад +1

    I guess, In the quicksort explanation he moves the pivot to the RIGHT END of the array.
    In the pseudocode, he moves the pivot to the LEFT end of the array. And after the swapping is done, he then brings the pivot to the original position from the LEFTEND.
    I've seen too many quicksort algorithm videos and this works the best for all my cases.

  • @akira_asahi
    @akira_asahi 2 года назад

    Thank you for the video. I am grateful for your time and contribution. Kind regards, Akira.

  • @davidrichmond9759
    @davidrichmond9759 6 лет назад +2

    These 4 minute videos are great for cramming!

  • @jeffchai6561
    @jeffchai6561 3 года назад

    This algo is akin to a toddler randomly sorting numbers around until they're in order

  • @mitchross4002
    @mitchross4002 Год назад

    God bless you man this is by far the most straightforward and comprehensible explanation of quicksort, really got me out of a pickle with this one.

  • @mekabare
    @mekabare 6 месяцев назад +1

    I'm seeing myself working customer service for the rest of my life

  • @yahiashams2334
    @yahiashams2334 2 года назад

    That without voice over made the video from great to perfect

  • @J4T375
    @J4T375 3 года назад +2

    all your videos are short and very useful.

  • @MoguMogu818
    @MoguMogu818 6 месяцев назад

    I was able to write quick sort in a day when I first learned it, and now I completely forgot and feel stupid. This is my major, how tf did I forget this algorithm.

  • @miso-ge1gz
    @miso-ge1gz 9 месяцев назад

    i cannot even describe how much i hate learning these, thanks for the video it helps a lot

  • @senaszel
    @senaszel 4 года назад

    Helped me. Great vid. Fan of your since now. Cheers.

  • @jarencascino7862
    @jarencascino7862 4 года назад

    This is exactly what I was looking for in a video

  • @SunsetsOverBatteryCity
    @SunsetsOverBatteryCity 4 месяца назад

    Him: “quick sort = pivot”
    Me: “WHILE HE HID IN RADIO WE PIVOTED TO VIDEO 🗣️💥”

  • @karaqore
    @karaqore 2 года назад

    Hvala ti brate pomogao si mi puno u životu

  • @Rglezy
    @Rglezy 3 года назад

    FINALY SOMEONE WITH CLEAR INSTRUCTIONS

  • @VictorBanerjeeF
    @VictorBanerjeeF 4 года назад +1

    Thanks Brother, You save my 10 min exam fast revision time

  • @jaymiracle5500
    @jaymiracle5500 4 года назад +6

    For those who are not understanding the pseudo code, here is the code that matches the demonstration:
    private static int partition(int[] arr, int low, int high) {
    int itemFromLeft = low, itemFromRight = high, pivot = arr[high];

    while(itemFromLeft < itemFromRight) {
    //you need the second condition for the rare case where the pivot is the largest
    while(arr[itemFromLeft] = pivot && itemFromRight != low)
    itemFromRight--;

    if(itemFromLeft < itemFromRight) {
    int temp = arr[itemFromLeft];
    arr[itemFromLeft] = arr[itemFromRight];
    arr[itemFromRight] = temp;
    }
    }
    int temp = arr[high];
    arr[high] = arr[itemFromLeft];
    arr[itemFromLeft] = temp;

    return itemFromLeft;
    }
    *Keep in mind that his pseudo code is 100% correct, it just shows a different partition method that can be used to do the same thing. Also I did this rather quickly so if there are any bugs please let me know*

    • @DeusNudus
      @DeusNudus 4 года назад +2

      its actually not correct, "leftwall = leftwall + 1;" needs to happen right before "swap(array[i], array[leftwall]);" not after it.

    • @ephy9974
      @ephy9974 2 года назад +3

      Thanks man. I've been wondering why this pseudocode doesn't match the explanation

  • @haloum
    @haloum Год назад

    this made it a lot more logical for me, thank you.

  • @reytampubolon6390
    @reytampubolon6390 2 года назад

    currently studying for my Algorithms and Data Structure exam, your video is very helpful :)
    thanks

  • @user-fc5ou7pn2k
    @user-fc5ou7pn2k 2 года назад

    amazing, ive got an exam tmrw... this lesson is much appriciated as my professor is not very good at explaining these basics

  • @alanperaza5696
    @alanperaza5696 4 года назад +1

    It was quick and I understood everything. Thanks a lot

  • @Agman3a
    @Agman3a 2 года назад +1

    Thank you so much! I was having so much trouble understanding this algorithm but you saved me in 4 minutes.

  • @joshuabrown604
    @joshuabrown604 2 года назад +6

    Thank you so much! Just understood how to do a quick sort in a few minutes. Fantastic Video! Keep up the great work 😀

  • @SuperJosba
    @SuperJosba 2 года назад

    Perfect explanation of quick sort!!

  • @arminkrahbar
    @arminkrahbar 2 года назад

    The visualization is perfect!

  • @thuynh2608
    @thuynh2608 3 года назад

    I am glad I read the comment to know that I am not the only one!

  • @minefacex
    @minefacex 3 года назад

    This will be useful for tomorrow's exam.

  • @aterribleyoutuber9039
    @aterribleyoutuber9039 2 года назад

    this is the best channel ever

    • @MichaelSambol
      @MichaelSambol  2 года назад

      thank you! please help spread the word :)

  • @Jack-dx7qb
    @Jack-dx7qb 4 года назад +2

    Why the pseudocode doesn't intuitively reflect the walk through?
    (Quote from Wikipedia) "The pivot selection and partitioning steps can be done in several different ways; the choice of specific implementation schemes greatly affects the algorithm's performance."
    There are two partition schemes:
    1. Lomuto partition scheme, which is the pseudocode provided in the video.
    2. Hoare partition scheme, which is the walkthrough in the video.
    Comparison (Quote from Wikipedia)
    1. "As the Lomuto partition scheme is more compact and easy to understand, it is frequently used in introductory material, although it is less efficient than Hoare's original scheme."
    2. "Hoare's scheme is more efficient than Lomuto's partition scheme because it does three times fewer swaps on average, and it creates efficient partitions even when all values are equal."
    To understand the Lomuto partition scheme more, I recommend a RUclips video called "Quicksort: Partitioning an array" by KC Ang.

    • @ggg-tq9be
      @ggg-tq9be 2 года назад +1

      thank you a lot!

  • @seanzhou2188
    @seanzhou2188 Год назад

    Thanks for the concise and succinct tutorial.

  • @LR-ke5pw
    @LR-ke5pw 3 года назад

    I actually understand a little bit now, thanks!

  • @biggiechungus784
    @biggiechungus784 2 года назад

    Oh damn. When it's explained like this, it really makes sense. I could totally code this lmao

  • @Versole
    @Versole 2 года назад

    Out of all the sorting algrotiems this one the hard to understand but you understand it you'll understand it.

  • @IOSALive
    @IOSALive 4 месяца назад +1

    Michael Sambol, You're amazing! Let's be friends and have fun together!

  • @MuggL
    @MuggL 3 месяца назад

    Your videos are busteling always, keep cooking!

  • @milenkopizdic9217
    @milenkopizdic9217 3 года назад +3

    The thing is, at the beginning he says you swap item from left with item to right which obviously makes item from left higher index than item from right, but he does it again and only then he swaps with pivot?! It's impossible to see a pattern when there's no pattern in this explanation.
    EDIT: "StOp wHeN InDeX oF itemFromLeft > index of itemFromRight" but the first time he swapped it was higher index too so that's what I meant

    • @chetanphoenix
      @chetanphoenix 3 года назад

      You don't swap the indices. You just change the numbers in the indices

  • @user-cl8bd6lm2g
    @user-cl8bd6lm2g 5 лет назад

    my professor is horrible at explaining this so I had to find a youtube video about quicksort and teach myself

  • @sushan_karki
    @sushan_karki 5 лет назад

    watching this video from NEPAL.
    Great sir. THANK YOU.

  • @vibhuarora2911
    @vibhuarora2911 5 лет назад +1

    Best explanation yet compared to all other one available on YT. Thanks!

  • @walteramenya5759
    @walteramenya5759 6 лет назад +35

    here for the comments

  • @user-ev6er5vg6s
    @user-ev6er5vg6s 2 года назад +2

    There is an error in the pseudo code in the end: leftwall should be incremented before swaping

  • @AushHegde-om9xv
    @AushHegde-om9xv 11 месяцев назад +8

    The video explains the concept of quicksort, a recursive algorithm used for sorting arrays. It emphasizes the importance of choosing a pivot and demonstrates the process of partitioning the array. The video also mentions the pseudocode for quicksort and discusses its time complexity.
    Understanding Quicksort Algorithm
    00:00 Quicksort is a recursive algorithm that uses a pivot to sort an array.
    00:13 The pivot is placed in its correct position, with smaller items to the left and larger items to the right.
    03:24 Choosing the pivot properly is crucial for the performance of the algorithm.

  • @williamgreen9280
    @williamgreen9280 Год назад

    Excellent explanation

  • @dejanualex
    @dejanualex 2 года назад +2

    why u didn't pick the last element as pivot ? Instead of picking the middle one and then swaping with the last one ...

  • @SarveRadhaNaam
    @SarveRadhaNaam Год назад +1

    don't you think at 4:04 , in Partition code. leftwall++ should be before swap(A[i], A[leftwall])

  • @sayyedfarazmohseni3465
    @sayyedfarazmohseni3465 3 года назад

    Best video so far

  • @CompilerStuck
    @CompilerStuck 2 года назад +1

    I can now finally sort my life out

  • @shakshi3935
    @shakshi3935 6 месяцев назад

    One night before the exam and here I'm totally baffled by this sort 🥴

  • @Socrates225
    @Socrates225 3 года назад

    brilliant explanation

  • @JA-vt1mh
    @JA-vt1mh 3 года назад

    this is a very clear explanation, thanks

  • @nolanrudolph5463
    @nolanrudolph5463 5 лет назад +1

    I feel like the pseudo code would reflect the presentation a lot more if we let pivot be A[high] with rightwall=high-1. Then the conditional statement to initiate swap would be if(A[i]>pivot), and of course having rightwall=rightwall+1

  • @dannylones2159
    @dannylones2159 3 года назад +1

    saying "move pivot" but instead swapping it with last number 🗿👍🏻

  • @DeusNudus
    @DeusNudus 4 года назад +11

    Code is not right.
    "leftwall = leftwall + 1;" needs to happen right before "swap(array[i], array[leftwall]);" not after it.

  • @jasmeet17mast
    @jasmeet17mast 3 года назад

    I will let you watch without a voice-over! was helpful! thanks

  • @srikarthickk9708
    @srikarthickk9708 2 месяца назад

    I thought my dumbass couldn't understand it, then I read the comments and realised that I lack basic understanding and must work on quicksort properly. This video is just like last minute revision for us I guess.
    Btw, ur videos help me understand a lot better and make me code the algorithms myself after learning the concept except this one
    😅

    • @MichaelSambol
      @MichaelSambol  2 месяца назад

      it takes time! be sure to check out github.com/msambol/dsa too.

    • @srikarthickk9708
      @srikarthickk9708 2 месяца назад

      @@MichaelSambol Sure. Thanks!