Analysis of quicksort

Sdílet
Vložit
  • čas přidán 15. 12. 2013
  • See complete series on sorting algorithms here:
    • Sorting Algorithms
    In this lesson, we have analyzed time and space complexity of quick sort algorithm as well its other properties.
    Series on time complexity analysis:
    • Time Complexity Analysis
    Lesson on space complexity analysis of recursion:
    • Fibonacci Sequence - A...
    For more such videos and updates, subscribe to our channel.
    You may also like us on facebook:
    / mycodeschool

Komentáře • 162

  • @cheems08213
    @cheems08213 Před rokem +13

    Time to time i find myself coming back to your videos, sometimes for revision, sometimes for just interest and I never leave unsatisfied. These videos although are free, but are of premium quality. Better than paid courses

  • @praveenreddykatta
    @praveenreddykatta Před 10 lety +5

    I should say your videos are the best in making the things simple and understandable. Please upload more videos

  • @bahdjibrildjibril
    @bahdjibrildjibril Před 8 lety

    Amazing series. It took me less that 2 hours to revise what used to take days for me.. .Best Way of teaching.

  • @gozi323
    @gozi323 Před 6 lety +4

    Thank you so much for this video!!! This has to be by far the most helpful CS programming learning video, that I have ever watched.

  • @tamara-kurosimonalale5238

    Incredible how your explanation made quicksort algorithm and its analysis so easy

  • @SadiqKhan876
    @SadiqKhan876 Před 8 lety +4

    Amazing lectures and best way of describing things with programs and complexity analysis for every one. I am waiting for next sorting like heap,redix etc. Please please upload those too.

  • @harshalisatwani
    @harshalisatwani Před 6 lety +5

    Please upload video lectures on hashing, heap sort, bucket sort and shell sort as well.. These videos have really proved very helpful in understanding sorting algos in a better way..

  • @rafaelfonseca7942
    @rafaelfonseca7942 Před 2 lety +10

    14:30
    As *n - k = 1*, then *k = n - 1*.
    Thereby, we will have a slightly different final result for this calculation:
    (n ^ 2 * c + n * c - 2 * c) / 2 + c1
    Anyway, we conserve the fact that this algorithm takes n ^ 2 of cost in the worst case.
    Awesome video teacher!
    Super enjoyed!

    • @adamtki
      @adamtki Před 7 měsíci

      I noticed that too and your comment confirmed I'm not missing something. Thanks!

  • @Utkarshkharb
    @Utkarshkharb Před 2 lety +5

    17:53 if the pivot lies at index i, then there are i elements in the left partition and n-1-i elements in the right partition(In a 0-based indexing)

  • @yiningli3160
    @yiningli3160 Před 4 lety +4

    built more confidence in challenging google from your lectures, thx !

  • @romxstar
    @romxstar Před 10 lety +11

    thank u sooo much we just did it in school .. and i wanted to revise it and here u are uploading the video of it

  • @tejasjoshi1907
    @tejasjoshi1907 Před 3 lety +2

    2 days ago j learned about merge sort and quick sort , but at today morning I thought that I hadn't got the exact logic or idea to solve them , so I decided to learn from your channel and just completed and boom💥,I am satisfied with the explanation (deep explanation) tha k u for making such brilliant videos🔥❤️

  • @AvidLearner11
    @AvidLearner11 Před 3 lety

    Thanks so much! Your videos are so great! I now look at your channel first if I need to review something. Just about broke my heart not to be able to find heap sort amongst the videos. Something to consider!

  • @AmiParikh9
    @AmiParikh9 Před 3 lety +1

    Superbly explained! Thank you for these videos. I have an algorithm interview, hope this helps.

  • @DahliaRich
    @DahliaRich Před 6 lety

    this is great. thanks so much. couldn't understand a word of what the instructor at school said. you explained perfectly.

  • @dhruvashah3161
    @dhruvashah3161 Před 9 lety +1

    Thanks a lot!!! It really help me to understand concept of all sorting algo very easily..

  • @amanrohilla5956
    @amanrohilla5956 Před 4 lety +1

    Please add further videos of all the playlists and thank you very much for the amazing, animation explanation. Love a.

  • @cyberpunk7702
    @cyberpunk7702 Před 10 lety +1

    amazing lecture !! I feel much more clear about quicksort now.

  • @amrousimen7170
    @amrousimen7170 Před 3 lety

    very thanks, you are the best teacher for algorithmic on youtube

  • @BhagwanJoshi-technocrat
    @BhagwanJoshi-technocrat Před 8 lety +31

    I loved the way you explained all sorting algorithms and its analysis. If you can add heap sort and radix sort in this list, that would be very helpful.
    Thanks :)

    • @londonandres856
      @londonandres856 Před 2 lety

      I dont mean to be so off topic but does someone know a way to log back into an instagram account??
      I somehow lost my login password. I would love any tricks you can give me.

    • @joellarry71
      @joellarry71 Před 2 lety

      @London Andres instablaster =)

    • @londonandres856
      @londonandres856 Před 2 lety

      @Joel Larry thanks so much for your reply. I found the site on google and Im in the hacking process now.
      I see it takes quite some time so I will get back to you later when my account password hopefully is recovered.

    • @londonandres856
      @londonandres856 Před 2 lety

      @Joel Larry it did the trick and I finally got access to my account again. I'm so happy:D
      Thanks so much you saved my account !

    • @joellarry71
      @joellarry71 Před 2 lety

      @London Andres No problem =)

  • @UmeshKumar-mf5bl
    @UmeshKumar-mf5bl Před 7 lety +1

    THANKYOU FOR DOING SORTING ALGORITHM VIDEOS...this helped me a lot
    but sir please make video on heap and radix sort also

  • @iqbalahmad3754
    @iqbalahmad3754 Před 5 lety

    You are purely gifted sir, love your lessons

  • @abdallahrazak8457
    @abdallahrazak8457 Před 7 lety +1

    Please in future lessons i hope you will make videos on radix sort and shell sort and thank you for these nuggets of programming lectures

  • @BhargavJhaveri
    @BhargavJhaveri Před 8 lety +1

    @mycodeschool: Could you please provide a link to the Average case mathematical analysis?

  • @PK-en1bm
    @PK-en1bm Před 10 lety +2

    Nice video :) Really helped me...
    Just one thing though: RandomizedPartition() should return pIndex to QuickSort() call, so I think Partition() inside RandomizedPartition() should be called as "return Partition()"
    Thank s for making such hugely helpful videos, keep up the good work...

  • @karankapoor2116
    @karankapoor2116 Před 10 lety

    sir would you please give the link to time complexity analysis in randomized approach for the sort ?

  • @anaganisaiteja9061
    @anaganisaiteja9061 Před 7 lety +2

    thank you sir...these videos are really awesome.
    but sir please make video on shell and heap sort.

  • @josejerry5546
    @josejerry5546 Před 10 lety

    thank u so much. it was really understandable. especially it gave me some confidence regarding code implementation.

  • @hangchen6131
    @hangchen6131 Před 6 lety +2

    I'm addicted to your lessons... so after 4 years, are there still more?? :)

    • @aditya234567
      @aditya234567 Před 4 lety +1

      Im sorry but he passed away 6 years ago :( You can find about him here www.quora.com/Who-was-humblefool

    • @punamroy3965
      @punamroy3965 Před 4 lety +2

      @@aditya234567 the one who passed away is Harasha Suryanarayana(co-founder) and the voice youre listening on here is of Animesh Nayan

  • @mohammadmujahid8850
    @mohammadmujahid8850 Před 4 lety +1

    Thank you for sharing such a great knowledge.

  • @dzmitryk9658
    @dzmitryk9658 Před 4 lety

    Thank you! A great explanation. I keep coming to your videos from time to time. lol

  • @niharikakumari6506
    @niharikakumari6506 Před 5 lety +1

    you are really very very good at explaining!

  • @camuflagehugo5137
    @camuflagehugo5137 Před 2 lety

    your videos are much better than those on coursera!

  • @shobhitranjan3957
    @shobhitranjan3957 Před 4 lety +1

    BRILLIANT PLAYLIST THANK YOU!

  • @zannylover2898
    @zannylover2898 Před 4 lety

    just aweshome,great sir,come again on youtube sir

  • @amitmahto68
    @amitmahto68 Před 8 lety

    +mycodeschool can you please explain how the given program for quicksort is not stable???
    I have tried to take examples but I am still not getting it??

  • @raghurambharadwaj
    @raghurambharadwaj Před 10 lety

    a big thanks to you sir....Great explanation.

  • @uzairbintabish9234
    @uzairbintabish9234 Před 6 lety +1

    Please make an addition of Binary Search Algorithm and its analysis as it is also an important tutorial which follow Divide and Conquer Rule. Other than this you have every tutorial regarding Design and Analysis of Algorithm.
    P.S. YOU ARE AMAZING.

  • @apuravsharma7034
    @apuravsharma7034 Před 3 lety

    this channel is gold

  • @ajayshah6978
    @ajayshah6978 Před 8 lety +3

    can u upload videos on heap sort and radix sort asap plz?? btsw excellent explanation..

  • @DenisG631
    @DenisG631 Před 8 lety +2

    +mycodeschool thanks for the video! Could you please post the link you are mentioning at 18:39 ?

  • @kartaLaLa
    @kartaLaLa Před 7 lety

    your video is extremely good for understanding :D!!
    please record more sorting algorithm :D

  • @manavmohata1240
    @manavmohata1240 Před 4 lety

    What if we took the random index from 1 to n-2as it will then never choose the last and first element?

  • @darshitamistry
    @darshitamistry Před 10 lety

    Thank you so much for very descriptive video on Quick sort. Please can you post a link for mathematical solution of T(n).

  • @usama57926
    @usama57926 Před 6 lety +1

    you are great mathematician bro thanks

  • @sawyermcbride1522
    @sawyermcbride1522 Před 8 lety +57

    you should do heap and radix sort

    • @loveanimals-0197
      @loveanimals-0197 Před 4 lety +3

      Those were not in the book he copied from.

    • @abdoemr3436
      @abdoemr3436 Před 4 lety +2

      @@loveanimals-0197 what book ?
      i think he use algorithm in c by sedgwick

    • @abhi1110
      @abhi1110 Před 3 lety +3

      @@loveanimals-0197 he is not alive. He expired in some accident 4 years ago

    • @rajg7592
      @rajg7592 Před 3 lety +2

      @@loveanimals-0197 then go on Karen read books instead

    • @tek1645
      @tek1645 Před rokem +1

      @@loveanimals-0197 CZcams creators explaining topics not just in computer science but math and science are superior to outdated teaching methods of textbooks and many "professors"

  • @moon.0_0
    @moon.0_0 Před 4 lety

    Hey,
    I just wanna tell u that u did great job ...
    But I want u to cover up heap sort(imp) and other sorting algorithms as well.

  • @dhruvneo
    @dhruvneo Před 3 lety

    Just wanted to say, amazingly explained. One query though,
    at 14:28, it is explained n-k = 1 , so k = n.
    This seems right? So either base case should T(0) or calculation will be made for k = n-1.

  • @user-fk8wq9dx4c
    @user-fk8wq9dx4c Před 8 lety +1

    Great tutorial . Thanks

  • @saurabhtiwaririshi
    @saurabhtiwaririshi Před 7 lety +26

    k will be equal to n or n-1?

  • @subashraj3919
    @subashraj3919 Před 2 lety

    Good and clear Explanation.. Thank you..

  • @divyarthsingh4001
    @divyarthsingh4001 Před 4 lety

    Annihilation condition for worst case, where you've written "n-k=1" is right, but further equated to 'k=n' is a mistake, "k=n-1" is correct. This might bring some difference in the final equation but complexity remains the same n.log(n)

  • @PeterXyzdlv
    @PeterXyzdlv Před 9 měsíci

    What if we take pivot as (start + end)/2?

  • @anithavikkiraman709
    @anithavikkiraman709 Před 9 lety +1

    amazing videos thanks a lot
    will you help me with radix and shell sort algorithms

  • @kamanakhanal9700
    @kamanakhanal9700 Před 10 lety

    thank you so much fr this tutorial.. bt plz can u help me with randomized quick sort time complexity calculations??

  • @rishabhsinha44
    @rishabhsinha44 Před 10 lety +12

    i think while finding time complexity in worst case ,for generic expression when n-k=1 then n=k+1 or k=n-1..

    • @jlb20001
      @jlb20001 Před 10 lety

      i think that too.. finally what's the deal here..? have you figure out..?

    • @ttenodi
      @ttenodi Před 9 lety +1

      yea, that's truth, but it doesn't matter that much, because the greatest element in polynomial will still be n^2.

    • @AnkitKumar-zu7cn
      @AnkitKumar-zu7cn Před 6 lety +1

      fair thought....but the twist is, for a very large value of n : n-1 -> n

  • @sabesansp
    @sabesansp Před 9 lety +1

    Good stuff !!! Loved the font... Can u post what application you used for writing and capturing the video ?

    • @mycodeschool
      @mycodeschool  Před 9 lety +8

      Sabesan Saidapet Pachai blog.mycodeschool.com/2013/11/how-to-create-amycodeschool-style-video.html

  • @anupamjoshi224
    @anupamjoshi224 Před 10 lety

    awesome video....nicely explained

  • @theOceanMoon
    @theOceanMoon Před 9 lety +40

    where is link to description of all the maths mentioned at time 18:39

    • @asfandalikhan6269
      @asfandalikhan6269 Před 7 lety

      dat was bluff xD

    • @NiazMohammad
      @NiazMohammad Před 6 lety +3

      It's not that hard to google with the term "randomized quick sort time complexity analysis"

    • @SAINIVEDH
      @SAINIVEDH Před 5 lety +1

      look it up in cormen's book

    • @udaykadam5455
      @udaykadam5455 Před 5 lety

      It's forward recurrence(extremely easy stuff), computes the running time complexity.
      Just search it.

  • @heisenberg_737
    @heisenberg_737 Před 4 lety

    At 18:24, either it should be summation from i=1 to n instead of i=0 to n, or if the limit is from i=0 to (n-1) then T(i) + T(n-i-1) should be written
    btw nice lecture.

  • @armandoantoniogarduno4969

    What if we use the "median 3" value as a pivot? We get three values from the subarray: The first, last and middle elements. Then we check the 3 values and determine which one is in the middle. Let's say that the elements are 4, 9 and 1, the element in the middle is 4, and we use that as our pivot. Then, we can re-arrange the elements: 1, 4, and 9 before subdivide the array.

    • @babysuyash
      @babysuyash Před 3 lety

      Yeah we can do that the median of 3 will have same complexity as the lomuto or the partition shown in the video ...but median of 3 will run faster it decreases some constants and also one could always use random pivot to not get the constant and settle in the average case...and I think we only have ways to prevent to get worst case for quicksort..I don't think we can somehow change the complexity of the worst case for the quicksort....For better time complexity one could always take 2 pivot points, as It is found more the pivot point the quick the quicksort will work but if one encounters worst case for quicksort the complexity would always be O(n^2)

  • @giannisdimaridis2920
    @giannisdimaridis2920 Před 9 lety

    Really helpful, thank you.

  • @shashwatsrivastava4150
    @shashwatsrivastava4150 Před 10 lety

    your videos are awesome !!
    more algos plz ...

  • @tomasz-rozanski
    @tomasz-rozanski Před 7 lety

    That was quick analysis of the quick-sort, ladies and gents.

  • @kautukraj
    @kautukraj Před 4 lety +1

    Very helpful!

  • @SanaMalik-ss3sh
    @SanaMalik-ss3sh Před 8 lety

    Can u plz upload the code implementation of "Merge Sort" also plz..........

  • @yogitajain8003
    @yogitajain8003 Před 3 lety

    Till date i just heard about randomized partition but didn't know now i got it

  • @chitrarajshekar3003
    @chitrarajshekar3003 Před 3 lety

    Heap sort and radix sort algorithms?

  • @vinayak186f3
    @vinayak186f3 Před 3 lety

    I have a doubt , would that randomized qs be at all effective ? since eventually , we are just shifting that random value to the end , that is also a random value .

    • @Utkarshkharb
      @Utkarshkharb Před 2 lety

      It doesn't matter where the pivot is placed. The value of the pivot matters. We are trying to avoid possibility of choosing the largest or smallest value in the array as the pivot, since that would lead to a skewed partitioning. By choosing the pivot randomly from the array, we are making sure that doesn't happen. Since choosing a non-extreme value is much more probable than choosing an extreme value, this approach is v effective. Shifting the pivot value to the end of the array just makes sure we can retain the same code we wrote if we just chose a pivot from the end :)

  • @chunaramgodara8016
    @chunaramgodara8016 Před 8 lety

    please upload a video on heap sort using c++

  • @jp-wi8xr
    @jp-wi8xr Před 8 lety +8

    14:30
    n-k = 1; k=n ( should be n-1 )

    • @prashantbalana7230
      @prashantbalana7230 Před 8 lety +1

      +Piyush Jaiswal
      if u 'll put k=n-1 ,then also the complexity 'll come-O(n*n),
      SOLUTION-
      T(1)+(n-1)*c*n -(n-1)*(n-2)*c/2
      c + c2(n*n - 5*n +2)
      cn*n-5*c*n+2
      =O(n*n)
      Hope it explains...

    • @sajalgoyal1094
      @sajalgoyal1094 Před 4 lety

      maybe k and n are both much much larger so k approximately equals n

  • @mayankgupta5658
    @mayankgupta5658 Před 7 lety

    where is the math of calculating the average case complexity i was not able to find it

  • @The-pf4zy
    @The-pf4zy Před 7 lety

    Can you do the gravity sort next?

  • @stardust3579
    @stardust3579 Před 4 lety

    great explanation 👍👍👌

  • @sciproject1
    @sciproject1 Před 8 lety

    mycodeschool your videos are amazing
    please can anyone explain me that how random no. is chosen as pivot.I understood that another function is made for this purpose but how will this function work?

    • @ridakhan7245
      @ridakhan7245 Před 8 lety

      +Yastika Kumar This won't be a function you write. Instead, you'll be using the language's random generator function. Just look that up.

  • @krishnaveniperam4955
    @krishnaveniperam4955 Před 3 lety

    wow explanation. Thank you

  • @pavanipriyanka105
    @pavanipriyanka105 Před 7 lety

    please post a video on heap sort

  • @haseebsohail8126
    @haseebsohail8126 Před 8 lety

    Great, you helped me a lot. :)

  • @JayKumar-qy3ke
    @JayKumar-qy3ke Před 7 lety +1

    please,upload heap sort.

  • @volkanulker6432
    @volkanulker6432 Před 3 lety

    14:31 why n-k=1 => k = n Can someone explain this to me ?

  • @w4h175
    @w4h175 Před 2 lety

    this person is god at teaching..

  • @100Ticks
    @100Ticks Před 9 lety

    t(n) = 2{2T(n/4) + c.n/2} + c.n
    Why do you have the extra c.n?

  • @sakshikochharnonu
    @sakshikochharnonu Před 8 lety +1

    if the Array is {2,7,1,6,8,5,3,4} then how will it work-> 'Pindex' and 'i' will have same values all through the loop
    Please help

    • @RohitSingh-bw1fo
      @RohitSingh-bw1fo Před 7 lety +1

      pindex will be incremented only if a[i] will be smaller than the pivot element i.e 4 in your case whereas i will be incremented after every element.

    • @keerthi6luvmyguitar
      @keerthi6luvmyguitar Před 6 lety

      No it will not.

    • @cpwithsundar
      @cpwithsundar Před 3 lety

      i will have the same value only at first position . and then the first swap is just like swap(2,2)....which can be avoided with giving condition like if(i!=PIndex) swap(A[i],a[PIndex]);

  • @nopecharon
    @nopecharon Před 2 lety

    Can someone please explain me how he has done that math in 13:11

  • @leharbhandari6852
    @leharbhandari6852 Před 9 lety

    Wow! What an awesome video! :D

  • @nopecharon
    @nopecharon Před 2 lety

    BEST VIDEO EVER

  • @matitiudeforever8155
    @matitiudeforever8155 Před 6 lety +1

    well done !!

  • @ramarao_amara
    @ramarao_amara Před 5 lety

    What's wrong in my code
    int arr[]={4, 5, 6, 2, 1, 7, 10, 3, 8, 9};
    int size=sizeof(arr)/sizeof(arr[0]);
    quickSort(arr, 0, size-1);
    void quickSort(int arr[], int low, int high)
    {
    if(low>=high) return;
    int partionIndex=randmized_partition(arr, low, high);
    quickSort(arr, low, partionIndex-1);
    quickSort(arr, partionIndex+1, high);
    }
    int partition_arr(int arr[], int low, int high)
    {
    int pivot=arr[high];
    int partionIndex=low;
    for(int i=low;i

  • @learnjava6249
    @learnjava6249 Před 8 lety

    Expressing T(n) in terms of T(1) , in that case n/2^k = 1. Can you please explain this?

    • @ridakhan7245
      @ridakhan7245 Před 8 lety +1

      At each step n is being divided by 2 to get n/2, then n/4, then n/8 and so on. In general it is T(n/2^k) with k being the number of times we've done that division. (Try this out for different values of k if you find it confusing) We want to take that expression to the base case of T(1) at which point n/2^k = 1.
      Hope this helps.

  • @rafaelfonseca7942
    @rafaelfonseca7942 Před 2 lety +3

    Teacher, at minute 17:06 we cannot forget of adding a return statement into RandomizedPartition as follows:
    RandomizedPartition(A, start, end)
    {
    pivotIndex

  • @nabidul
    @nabidul Před 10 lety

    nice tutorial thanks :)

  • @SantoshKumar-fb8wo
    @SantoshKumar-fb8wo Před 10 lety

    very nice video

  • @nikharjain
    @nikharjain Před 6 lety

    Thank you

  • @a7thebest
    @a7thebest Před 9 lety

    Thanks U So Much!

  • @yashranka5597
    @yashranka5597 Před 7 lety +1

    plz make a video on heap sort also

    • @samyouaret5622
      @samyouaret5622 Před 7 lety +2

      the narrator is alife , his friend who is dead .

  • @arkadeep8049
    @arkadeep8049 Před 5 lety +2

    8:22 Instead of a, I'll write c, because c looks good, when I am saying its a constant.... XD

  • @rockonyo100
    @rockonyo100 Před 9 lety

    Thanks.

  • @amritansh92
    @amritansh92 Před 7 lety +1

    if n-k=1, then how is n=k? it should be k=n-1. at time 14.33

    • @mrdedhia
      @mrdedhia Před 3 lety

      yes, it should be n-k=0, hence k=n

  • @nopecharon
    @nopecharon Před 2 lety

    How he written the equation in 18:22

  • @abhrajyotikirtania2275
    @abhrajyotikirtania2275 Před 10 lety

    nice.. thanks..