Heap sort in 4 minutes

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024
  • Step by step instructions showing how to run heap sort.
    Code: github.com/msa... (different than video, I added this retroactively)
    Source: ind.ntou.edu.tw...
    LinkedIn: / michael-sambol

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

  • @cardakeys
    @cardakeys 4 года назад +1952

    Everybody gangsta till pseudocode kicks in

    • @vaiebhavpatil2340
      @vaiebhavpatil2340 3 года назад +23

      fr😂

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

      True lol

    • @miloradowicz
      @miloradowicz 3 года назад +51

      Wriwitng pseudo code is easy once you understood the algorithm. Reading someone's pseudo code on the other hand can be quite annoying, because they may use different naming conventions, different syntax and even different "language" than you.

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

      I guess Im randomly asking but does someone know of a method to get back into an Instagram account..?
      I somehow lost my password. I appreciate any tips you can give me!

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

      @Marley Alexzander Instablaster ;)

  • @timetraveler6780
    @timetraveler6780 5 лет назад +464

    Audio is so clear, amazingly static free( it is so near to being a meditation app audio).

  • @karatefrosch17
    @karatefrosch17 6 месяцев назад +53

    I am genuinely impressed at how shit my professor is he takes 5 slides to explain this and never asks any of the many questions i had. This video did more for me than 2 lectures.

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

      my lecture explained it over 7 slides, kind of understandable, but the video sure helped

  • @ankitb3954
    @ankitb3954 6 лет назад +46

    you just saved my semester. I have been binging your channel

  • @devendratapdia11
    @devendratapdia11 5 лет назад +9

    First i felt why u didnt explain how to build max heap but then it becomes clear as thats not the point of video and can be learnt seperately. You are making these look so simple. Thumbs up to you.

  • @Blueglitter73
    @Blueglitter73 6 лет назад +40

    This was very clear to me. Now I understand heap sort in a visual sense thank you

  • @parikshit804
    @parikshit804 6 лет назад +42

    I like the small time of these videos. Neat graphics. Good work.

  • @joevtap
    @joevtap 2 года назад +24

    What a nice explanation! That made my understanding of the algorithm a lot easier, thanks a lot

  • @weiliu_
    @weiliu_ 9 месяцев назад +2

    What a clear explanation. I couldn't understand what teacher said till I see this video 👍

  • @helo-fn8pn
    @helo-fn8pn 7 лет назад +206

    ok, better than my lecture just read through slides

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

      i agree

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

      Until you are asked to prove the time complexity ^^

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

    The best part is the very last portion where everything is summed up and pseudocode is given. Thanks! Exploring more videos to prepare for an interview!!

  • @flextren
    @flextren 22 часа назад

    Saved lots of time thanks yt algorithm for finding the best and fastest way of finding this video ❤

  • @kogmawgaming
    @kogmawgaming 5 месяцев назад +1

    I owe my entire CS degree to videos like this. Explains stuff much better than professors you have to pay for : ^)

    • @MichaelSambol
      @MichaelSambol  5 месяцев назад +4

      when you IPO your tech company you can toss me 1% ;)

  • @shacharh5470
    @shacharh5470 5 лет назад +85

    You skipped all the details on how build-max-heap works! That was the part I wanted to see, I need to understand how it manages complexity of O(n)

    • @navikh333
      @navikh333 5 лет назад +10

      Me too..stupid video

    • @a_medley
      @a_medley 5 лет назад +20

      it manages O(n) by using a bottom-up approach. Each sub-tree in a heap must also maintain the heap property. When you run build-max-heap the runtime depends on the height of the tree. Since you can safely build a heap bottom-up, you would get something like this: O(n + (1/2)n + (1/4)n + (1/8)n + (1/16)n + ...), which simplifies to O(2n), or just O(n). That's not exactly what happens, but it's along those lines. You should google "linear time build heap" for more info.

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

    This process was very confusing in my lecture but looking at it with the array and the tree side-by-side made it crystal clear what was going on.

  • @tobyto4614
    @tobyto4614 2 года назад +10

    Doesn't make sense, if the build max heap has already sorted in desc, why would I need to do another sort again.

    • @luisf_lima
      @luisf_lima Месяц назад +1

      that's what I thought, it doesn't make any sense

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

    Great tomorrow our mem will be taken our class test..now i watching your video😊great.. ❤

  • @INT_MAX
    @INT_MAX 7 лет назад +202

    Thank you for speaking proper English.

    • @Sitback
      @Sitback 6 лет назад +3

      LMFAOOOOOO [TRUUUUUUUUUUUUU]

    • @Rajonty
      @Rajonty 6 лет назад

      LOL

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

      Thats fucking racist tho

    • @raphaelandrade555
      @raphaelandrade555 5 лет назад +5

      @@dreamy6517 That's not racist, there are people who speak bad english, what's the problem with that?

    • @randomhappyguy6719
      @randomhappyguy6719 5 лет назад +7

      @@raphaelandrade555 Consider this: someone's native language is English and has lived in Japan for 2 years, and this person makes a video in Japanese, which incurs some native Japanese speaker saying "he's not saying proper/bad Japanese". It's like laughing at a 1-month-old not being able to walk.

  • @RealSlimRoeder
    @RealSlimRoeder 4 года назад +4

    i know this is a little late but thank you so much for this video!!
    the way you explained it, i understood this much better than when my prof talked about it in class.
    bonus points for the pseudocode at the end :D

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

    after watching several videos, I find it the best

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

    omg my textbook made this so confusing, but this gave me so much clarity thank you so much!

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

    Great explanation. Short and precious.

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

    I don't get it, build max heap sorts the tree, right?
    Why not just build the array with the sorted tree backwards, linearly?

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

    I think the array you used in this example might be misleading, as when you do the max-heap you obtain a descendent sorted array and from there you can just flip it to get the sorted array.

    • @AahanaHegde-py7ng
      @AahanaHegde-py7ng Год назад

      yes this is what is confusing me, im new to programming, but can you explain why just using max heap isnt enough?

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

      @@AahanaHegde-py7ng max-heap just ensures that the parent node is greater than its children which doesn't guarantee that the tree written in the array form will be sorted in descending order. For example, when the original array has max-heap applied to it in the video it returns the array 9 8 5 3 2 1 (which is sorted descending). However, if you look at the representation of the tree in the video and imagine flipping the left sub tree with the right you would get the array 9 5 8 1 3 2. This still satisfies the condition that the parent node is greater than the child, but the array is no longer sorted.

  • @EricSartor
    @EricSartor 6 лет назад +3

    I'm very confused about something. When you call build-map-heap, you are sorting the entire array in descending order. At that point, the array is sorted. Why would you keep sorting after that point?

    • @temirlansafargaliyev8873
      @temirlansafargaliyev8873 6 лет назад +1

      for example, left child can be less than right one, so now array is unsorted
      UPD: the left child of right child can be greater than the right child of left child. This try must be correct :)

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

      Yes it's sorted but remember that it is *heap-ordered* and the resulting array is in the binary tree notation. The last portion of the algorithm is still necessary to have a sorted array by making use of the heap ordered array by continuously removing the largest element and reheapfying until you get your sorted array

    • @2004seraph
      @2004seraph Год назад

      @@azzam7239 I don't really understand, in all the examples I see, the heap is physically stored as an array, and max heapify sorts that array perfectly, so why don't we just use that array?

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

    This saved me for my algorithms test. Thank you

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

    1:38 and we are done, just call reverse on the array.... wait why are you messing it up again? I think the example data made this more confusing as it ended up sorted after the first build-max-heap call.

  • @ethanbai5712
    @ethanbai5712 6 лет назад +3

    Nice video, Michael. This is very clearly explained.

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

    From the Pseudo code, as the for loop in the HeapSort() is already decrementing from n to 1, the (n - 1) in the HeapSort() should be useless?

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

    After you buildMaxHeap the array was sorted already in inverse way. Why don't you just reverse it?

  • @zhonq
    @zhonq 6 лет назад +4

    gonna share this channel w/ all my CS friends omg

    • @masterjif9506
      @masterjif9506 5 месяцев назад +3

      Well congrats on y’all’s graduation

    • @yasark.4238
      @yasark.4238 2 месяца назад

      @@masterjif9506 😂

  • @nosignal5908
    @nosignal5908 10 месяцев назад

    Most amazing and simplified explanation

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

    Thanks for everything you're doing buddy

  • @DarkGT
    @DarkGT 7 лет назад +92

    after 5 videos explaining Heap Sort I get it now, next binary tree...God help me.

    • @boggeshzahim3713
      @boggeshzahim3713 5 лет назад +87

      Kind of weird to understand a heap sort without understand what a binary tree is

    • @TheAmayzinRayzin
      @TheAmayzinRayzin 5 лет назад +5

      @@boggeshzahim3713 I said the same thing lol

    • @ishaanj8023
      @ishaanj8023 4 года назад +8

      A binary tree is just a tree in which each node has 2 children at most, just a definition.

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

    From 2020 that’s still bright video 👩‍💻

  • @norbertkolud2878
    @norbertkolud2878 7 месяцев назад

    saving lives to this day, thank you very much

  • @maya.n
    @maya.n 5 лет назад +3

    So, when you do max heap the first time, you get a sorted array but in a different direction. Can't you just make a new array that has the same values, but reversed and you are finished with the sorting?

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

      yahh like put everything into a stack and then take it out in order ?? I thought the same :P hopefully someone will answer

    • @maya.n
      @maya.n 5 лет назад +1

      @@kylestormeyes4976 Actually, It is not correct. It only happens in certain cases, and this one is one of them. I should've deleted the comment when I realised that.

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

      @@maya.n Thank you for not deleting the comment. I thought the same thing.

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

    best explanation on how it works

  • @yuvaranikannan9297
    @yuvaranikannan9297 5 лет назад +5

    Short and sweet explanation. Thank you:)

  • @22UCS102Rohitkumar
    @22UCS102Rohitkumar 9 дней назад

    00:07 Heap sort is a sorting algorithm that uses the concept of a max-heap.
    00:37 The video explains how to create a max heap from an unsorted array and uses heapify for faster performance.
    00:53 Heap sort uses max heap to find the largest item and continuously creates max heaps.
    01:15 Heap sort is based on representing an array as a tree
    01:45 Heap sort involves building a max heap, swapping the largest item, and removing it from the tree.
    02:12 Heapify moves the largest number to the top
    02:39 Heap sort is a sorting algorithm
    04:08 Heap sort has a time complexity of O(nlogn).
    Crafted by Merlin AI.

  • @NickWinters
    @NickWinters 5 месяцев назад +1

    I'm confused. Why do you need two functions for this? In both cases the input was a tree and the output was a max heap.
    Maybe it's because we know that after the first one it's only the root node that is out of place, and we use another function that doesn't do unnecessary calculations related to other nodes. Then it'd be better if the name was more descriptive. Considering how it doesn't operate on the whole tree, it can be named something like heapify_branch instead

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

      Could you take a look at the full playlist, I think it will help: ruclips.net/p/PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6.
      Code: github.com/msambol/dsa/blob/master/sort/heap_sort.py

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

    hash sort by distribution function (for example linear) direct bin division placement, subsort each bin, O(n), divide and conquer, extended quick sort by multiple pivots at once, the bins

  • @Satoabi
    @Satoabi 5 лет назад +19

    I turned it into "heap sort in 2 minutes"

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

    Yes, yes, yes. This is insanely good. Thanks for the video

  • @anonymous-dp7od
    @anonymous-dp7od 10 месяцев назад

    Thank you sir. Just simple to understand ☺️

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

    Awesome video, way better than my professor!

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

    Noice...much better video than others

  • @daksneezian1252
    @daksneezian1252 6 лет назад +4

    Your videos are incredible, very useful - thanks!

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

    Not all heroes wear capes. You saved me😮‍💨

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

    My professor didn't even post a class, she just uploaded links to all your sort videos instead.

  • @OK-cv1pt
    @OK-cv1pt 2 года назад

    I have mid term comming up, thanks sir

  • @madhavanand756
    @madhavanand756 3 года назад +6

    1:35 At first function call of "Build Max Heap" we have sorted array in descending order, we fix this simply by swapping. Why are we performing these many operations ?
    Anyone please !

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

      that just happens for this example.. doesn't happen always

  • @LucasNaruto8107
    @LucasNaruto8107 7 лет назад

    Dude, your short explanation is awesome

  • @sinto4105
    @sinto4105 4 года назад +7

    at 1:35 why you are sorting the sorted array

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

      Lokesh Joshi it was a coincidence that his max heap was already sorted in descending order. That will not always be the case. Should be a different example to avoid confusion like this

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

    Just one confusion, are those formulas in pseudocode?
    I thought they were
    left = 2i+1
    right=2i+2

    • @gr.4380
      @gr.4380 29 дней назад

      I believe the pseudocode is 1-indexed instead of 0-indexed, which is very confusing

  • @li-pingho1441
    @li-pingho1441 3 года назад

    The best tutorial of heap sort :)

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

    Hmm, not sure I'm going to retain this long enough to get these test questions right lol

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

    great tutorial! took me a while to understand but now i get it thank you for teaching me this

  • @Akshay-cj3hq
    @Akshay-cj3hq 5 лет назад +1

    Once we have the Max heap, isn’t it already sorted?? Now just reverse the order? What am I missing here?

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

      There is no guarantee that the array is sorted just because it is a Max Heap. Just look at the Max Heap at 2:20
      for instance.

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

    Is it right to assume that a Heap is ordered? We know that the heap property guarantees the greater or smaller relation between parent and children, but the overall tree may not be exactly ordered.

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

      Can you take a look at the Heaps playlist? It provides more context.
      ruclips.net/p/PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6

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

    Excellent explanation, simple and clear!

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

    Very nice explanation!! Thanks a lot. 😊

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

    A very nice explanation. Thanks

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

    @1:38 isnt build-max-heap essentially 2 steps of heapify, first to swap between 2 and 8, then 2 and 9?

  • @rredy
    @rredy 10 месяцев назад

    Amazing explanation

  • @salsamancer
    @salsamancer 11 месяцев назад

    Always appreciate CS tutorials without the Hindi accent 👍🏿

  • @nextadastraschool7230
    @nextadastraschool7230 9 месяцев назад

    Brother please make a video on threaded binary tree insertion, your videos are great and in less time, great for revisions and understanding complex concepts easily and quickly ❤

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

    If we can build the maxheap why do we even need to sort it? Isnt it already sorted?

  • @dominiorrr6510
    @dominiorrr6510 7 месяцев назад

    What's the point of heap-sorting when we already have a sorted max-heap at 1:40? Yes, it's sorted backwards, but heapsorting takes more time than reversing a sorted array. I don't really get it.
    EDIT: I got it and I think the example used in the video wasn't that good, because a max-heap doesn't necessarily end up being a sorted array.

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

    Heap sort in 4 mins!? 😱 You desperately need code optimization 😂 just kidding. Great video, well well explained. thanks ✌️👏

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

    Trying to understand build-max-heap and heapify here. Based on your explanation, build-max-heap arranges the tree so that the highest value goes to the top, forming max heap, then you swap it with the last element (bottom right) in the tree and remove it from the tree. Then you call heapify to gradually move the last element situated on top down for the child nodes (having higher value) to go up. How does the node choose which immediate child node to promote? And if what heapify does reiteratively is to eventually move the highest value node up to the top, why cant we call build-max-heap in the beginning?

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

      Have you taken a look at the other two videos in this playlist? I think they'll help. ruclips.net/p/PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6

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

    Great Explanation..Keep it up buddy

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

    Very clearly explained. Thank you sir.

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

    Well explained sir, very nice explanation.

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

    Videos are awesome man.

  • @에헤헿-l7v
    @에헤헿-l7v Год назад

    so clearly explained! Wow thank you

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

    This is the Ffff reason I subscribed

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

    awesome, very much appreciated!

  • @attilatoth1396
    @attilatoth1396 7 лет назад +1

    Good as always! Thank you Michael!

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

    Clear explanation. Thanks.

  • @davidjames1684
    @davidjames1684 4 года назад +8

    I wonder if on average, plucking the 2 largest elements from the maxheap (if available), will speed things up. It seems wasteful to not pluck 2 at a time since we know the 2nd one will be one of the roots children. I traced this example on paper and it seems to work well. However I would like to know on say a 1 million entry tree (19 levels deep), how much faster it would be in real time. I would want to randomly generate 1 million numbers, store them for input to both "flavors" of heapsort, then make a table of outcomes. For example, 4.7 seconds classic heapsort, 4.6 seconds modified heapsort. I would also want to try cases with 1 million unique numbers, cases with 1 million small numbers with lots of repeats (like in the range 1 to 1000), and 1 million numbers with large gaps (like use 1 million random 32 bit numbers). I think the results would be interesting. Maybe someone can try it and report back.

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

    for heapify does it not take three inputs, the missing one being n?

    • @MichaelSambol
      @MichaelSambol  5 месяцев назад +1

      see here: github.com/msambol/dsa/blob/master/sort/heap_sort.py

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

    Thank you for this sample of heap sort!!! 😍

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

    Why do you perform heapify on the left subtree or sometimes the right subtree?

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

      according to max heap property parent node will always be greater than the child nodes and it is applicable for the subtrees as well.

  • @DaDa-gr7cy
    @DaDa-gr7cy 3 года назад

    Is it just a coincidence or maxed heap is always reversed of the sorted array?

  • @ranjanaashish
    @ranjanaashish 6 лет назад

    greatly simplified. Superb explanation :)

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

    Why don't we reverse the elements of the data structure after first "build max heap"?

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

    you omitted the initialization of the variable 'n' in the function heapify. n = elements_in(A)... it is the number of elements in the array of data.

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

    heap sort for reversing a sorted list?

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

    We are doing heapify down? so why is it logN?

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

    You haven't pass the n as a parameter in the heapify method.

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

    Amazing and concise. Thanks

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

    why use heapify function? couldnt the algorithm work with createMaxHeap function only? thx

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

      Take a look at the code here: github.com/msambol/dsa/blob/master/sort/heap_sort.py

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

      @@MichaelSambol thanks a lot

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

    thank you

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

    Amazing quality. Dark mode option perhaps?

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

      thank you! all new videos for sure. I wish there was an easy option for dark mode on old videos, but it'd require remaking them.

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

    simple and effective, thanks for the video

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

    When you learnt Binary tree search and now eager to use it in this heap sort knowing it's not gonna be that smooth, bruh.

  • @vinothselvaraj8005
    @vinothselvaraj8005 6 лет назад

    Very good explanation. Thanks

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

    The best tutorial. Thank you

  • @sivanisanku881
    @sivanisanku881 6 лет назад

    Tq sir less time more information about heap sort