Quick Sort Using Recursion (Theory + Complexity + Code)

Поділитися
Вставка
  • Опубліковано 6 чер 2024
  • In this video, we cover the quick sort algorithm. Including the theory, code implementation using recursion, space and time complexity analysis, along with comparison with merge sort. We also see how in-built sorting algorithms work.
    Take part in the learning in public initiative! Share your learnings on LinkedIn and Twitter with #DSAwithKunal & don't forget to tag us!
    👉 Resources
    - Join Replit: join.replit.com/kunal-kushwaha
    - Complete Java DSA playlist: • Java + DSA + Interview...
    - Code, Assignments, & Notes: github.com/kunal-kushwaha/DSA...
    ➡️ Connect with me: kunalkushwaha.com
    =========================================
    Timestamps:
    00:00 Introduction
    03:01 What is Pivot?
    04:43 Recursive Quick Sort
    09:58 How to put pivot at correct position?
    17:55 How to pick the pivot?
    20:15 Complexity comparison of pivot positions
    27:45 Important Notes
    29:32 Hybrid Sorting Algorithms
    31:49 Code for Quick Sort
    39:12 Internal Sorting Algorithm
    41:20 Outro
    #sorting #placement #dsa #interviews

КОМЕНТАРІ • 182

  • @hc-dc7043
    @hc-dc7043 2 роки тому +23

    One of the best explanations I've seen for Quick Sort. The way he broke the concept down to its nuts and bolts is really amazing.

  • @zainabfahim8714
    @zainabfahim8714 2 роки тому +20

    The confidence you have in your work, is empowering!! Keep that going

  • @sagarmore9425
    @sagarmore9425 2 роки тому +8

    I have tried to understand merge sort and quick sort literally a thousand times. In college, classes, some time by me.
    I was not able to visualize how it is actually working with recursion, although I knew the code.
    But the way, you are simplifying the things and the way you have had the first recursion video done is just awesome.
    That first recursion video is quite important and on top of this you explained this sorting so well, kudos man!

  • @nishantsingh8477
    @nishantsingh8477 2 роки тому +14

    There's this merge sort and quick sort, people say its hard to understand this and so I left them and proceeded further in my DS journey. But I was damn sure you will make it easy and so listened to you and Now I know this . Thankyou KK Bhaiya 🤩

  • @Sillysmiles76
    @Sillysmiles76 Рік тому +17

    Such a blessing to learn DSA with your videos.😇 Please complete the series.🙂

  • @rohitchilhorkar8114
    @rohitchilhorkar8114 2 роки тому +2

    I can't even express how much value it is providing us...hats off kunal bhai!

  • @tejasvijain1077
    @tejasvijain1077 2 роки тому +1

    Before watching this vid, i was on gfg and javapoint understanding what quick sort was and my god, kunal has explined it so well and he hasnt copied what they did and I was blown by how easy he has made this!! Kudos bro,

  • @Helly_Patel
    @Helly_Patel 2 роки тому +5

    Thanks for teaching us like no one did till now!! One small request, please make lectures on dynamic programming as well!!

  • @sravansunkara9145
    @sravansunkara9145 Рік тому

    I feel very confident whenever I learn from you, Thank You for existing, God bless you!!!

  • @mk_ahmar
    @mk_ahmar Рік тому +13

    Hey Kunal, your lectures are valuably explained, and covers everything one should know sooner or later.
    For example after watching this QuickSort lecture, all I've to do is practice some question, I don't need to watch any more concept of this anywhere, and this is amazing. You and your video lectures are underrated, if this quality of lectures are provided by any EdTech they would have charged that course extravagant.
    Hope I'll be able to get ₹7Lakh/month 😂(Joking).

    • @KunalKushwaha
      @KunalKushwaha  Рік тому +26

      you wont get 7 lakhs per month with dsa, it happens with dev

  • @dickharry910
    @dickharry910 Рік тому +2

    I remember plucking out my hair on recursion and sorting algos before stumbling on your videos. You explain it very well and its very intellectually satisfying to watch your videos as well.

  • @vidhijain2945
    @vidhijain2945 2 роки тому +16

    The way you have explained is great Kunal!

  • @Cloud-577
    @Cloud-577 2 роки тому +1

    thank you I actually like this implementation better than other ones I have seen. this will stick with me, no doubt

  • @VinodKumar-fn2iq
    @VinodKumar-fn2iq 2 роки тому +7

    Kunal is very quick now 🔥
    Thanks for the course ❣️

  • @karthikpm9669
    @karthikpm9669 2 роки тому +8

    this is good...i mean its good that you didnt advertise your videos in a humble way , because people wont know how good your videos are. PS i didnt realise how fast time went , the way you taught was very smooth and seemed like a story to me.

  • @AshishKumar-ys7rj
    @AshishKumar-ys7rj 6 місяців тому +1

    best lecture on yt for quick sort because it is the most efficient i have seen, but first watch the quick sort algorithm by striver, he will clear all the doubts if you have got any by watching this lecture , since i had lot of doubts . Once you understand the algorithm u can follow the code here .
    The concept will be crystal clear then .

  • @vinaykrishna747
    @vinaykrishna747 Рік тому +2

    Please Use Black Background for writing on the screen
    It doesn't affect eyes much 😊😊
    Consider this Man

  • @rakeshkumarmaurya8265
    @rakeshkumarmaurya8265 2 роки тому +5

    Best DSA COURSE on EARTH 🔥🔥
    THANKU @kunal kushwaha

  • @shantahiremath7313
    @shantahiremath7313 2 місяці тому

    Thank you Kunal Sir. You are always the best teacher. I never learned this sort by fearing the complexity. But now you made it a cakewalk. Always grateful.

  • @shikhamaurya4453
    @shikhamaurya4453 2 роки тому +13

    Ohh damn,
    This was so well explained
    45 minutes is totally worthy

    • @KunalKushwaha
      @KunalKushwaha  2 роки тому +5

      Thank You!

    • @twi4458
      @twi4458 2 роки тому

      Can anyone help me in understanding 24:50, How we got O(N^2). It is Linear Recurrence Relation, Right?

    • @ritviksaran6199
      @ritviksaran6199 2 роки тому

      after each pass how does it ensure that pivot will end up in the correct position ?

  • @Mohit_Gupta24
    @Mohit_Gupta24 Місяць тому

    As always brilliant explanation. I used to be scared of quick sort in my college days, but this video makes it seem really easy.
    Moreover, I was able to relate Step: placing pivot at the correct index with Binary Search step.
    In binary search, we search for a target element, assuming the array is sorted, and use the start and end indexes as pointers to the virtual array. Here we have to just place the pivot at the correct index, so instead of searching the target, we already have the target(i.e. pivot), we have to put at correct index and in this process we are ensuring elements less than pivot are on LHS, and elements greater than pivot are RHS.

  • @requisits
    @requisits Рік тому

    Thank you kunal finally understood the concept deeply.

  • @vikaspanwar5194
    @vikaspanwar5194 2 роки тому +1

    thanks for uploading at this frequency.
    Hope that you will cover dp really soon. 👏🙌

  • @SochtaHoonMain
    @SochtaHoonMain 8 місяців тому +4

    Kunal Kushwaha : "Your start is low , Your End is going to be high" :)

  • @baap6382
    @baap6382 2 роки тому +1

    Wow, you are so good.
    Wish you to solve complex algorithms down the lane

  • @civuasdev5532
    @civuasdev5532 2 роки тому +1

    Hey kunal, Thanks for this course.

  • @devanshgaur1747
    @devanshgaur1747 2 роки тому +1

    Bhaiya ,aap sachii mein bohot achaa padhatee hoo. Thanks bhaiya for such a course

  • @shivamrana4633
    @shivamrana4633 3 місяці тому

    You are boosting my confidence day by day..🎉😊

  • @anjalithakur_12
    @anjalithakur_12 2 роки тому +2

    Very good explanation just loved it

  • @VishalKumar-pk9ek
    @VishalKumar-pk9ek 2 роки тому +7

    In the merge sort video , I was little confused in the concepts of sorting algorithm through recursion but by this video , the previous confusion also got cleared . Thank you so much 😍😍😍

    • @KunalKushwaha
      @KunalKushwaha  2 роки тому +1

      You're very welcome!

    • @vikassk1308
      @vikassk1308 2 роки тому

      @@KunalKushwaha
      little confused, when you say pivot would be in the correct position after swaps
      if I have below array and I choose 4 as pivot
      {8,6,1,4,2,12}
      after swaps, ill end up having
      {2,4,1,6,8,12}
      where 4 is at index 1 but it should be at index 2 right ?

  • @talish7714
    @talish7714 2 роки тому

    good job kunal and never gave up bro keep it up

  • @piyush9266
    @piyush9266 2 роки тому +1

    U knw bro..i think u r inborn Guru not a professional teacher.may god bless u with all Happiness of this universe.🙏

  • @amruthaa5876
    @amruthaa5876 2 роки тому

    Thank you so much, Kunal!

  • @charaiveticharaiveti8414
    @charaiveticharaiveti8414 2 роки тому +3

    Kunal, your tutorials are gems. I can pay for such quality content. But you choose not to. Love and Regards. Tweeting for better reach.

  • @geetankarkarmakar378
    @geetankarkarmakar378 2 роки тому

    Mad stuff ❤‍🔥❤‍🔥
    Thanks a ton !!

  • @anshulgoel1940
    @anshulgoel1940 Рік тому +3

    An alternative approach is to swap the pivot with the last index before we start in each recursive call and then start comparing left and right. Once index cross over, we swap pivot with left pointer. Works out much cleaner at code level.

    • @pratheeeeeesh4839
      @pratheeeeeesh4839 9 місяців тому

      The approach which you told above does that calculate the pivot using the same mid concept?

    • @anshulgoel1940
      @anshulgoel1940 9 місяців тому

      @@pratheeeeeesh4839 No. Pivot can be picked in any way. It won't make any difference at complexity level. This approach I suggested just keeps the code clean. Hope it helps

  • @sravanakirtana2787
    @sravanakirtana2787 2 місяці тому

    Awesome. You make everything very easy. (In your words easy peasy 😅)

  • @NilavraPathak
    @NilavraPathak 2 роки тому +2

    I think quick select is also a closely related technique that can be used to solve many problems.

  • @vanshsharma2486
    @vanshsharma2486 2 роки тому

    great video bro, thank you so much!!

  • @smilemania5102
    @smilemania5102 2 роки тому +1

    Awesooooooooooooome ❤️❤️

  • @yourmentor8242
    @yourmentor8242 2 роки тому +2

    Hey kunal please bring some leetcode sorting questions problem videos,and yes
    Thank you so much for this Awesome content bro ❣️

  • @randheerkumargautam6433
    @randheerkumargautam6433 Рік тому +6

    will you make video on dynamic programming as well?

  • @suyashkumar8840
    @suyashkumar8840 2 роки тому +1

    Love you kunal bhai
    ♥️♥️

  • @akshaykumar-wd8jc
    @akshaykumar-wd8jc 2 роки тому

    Great video kunal

  • @Vedsingh.
    @Vedsingh. 2 роки тому +2

    Bro amazing hetric👌👌

  • @shyamalm88
    @shyamalm88 2 роки тому

    Kunal Facing too much problem with sliding window technique. with strings and other things, it will be very helpful if you can create a video on this with solving some problems, not only the maximum sum problems but other problems also some tips or tricks will be fine.
    Love your work. your content really helpful.

  • @ayushmaheshwari809
    @ayushmaheshwari809 8 місяців тому +1

    Hey Kunal , why pivot element not place correct index after one recursion call ? Although the array is sorted in the end .

  • @firdoshansari2757
    @firdoshansari2757 2 роки тому +4

    Hey Kunal, what is the possibile time you take to complete dsa and start with Opps??

  • @kirankumar9729
    @kirankumar9729 2 роки тому

    Fabulous explanation..

  • @adilkhan-ft7xv
    @adilkhan-ft7xv 2 роки тому +1

    Hi kunal, can you tell how long it will take for dynamic programming lecture??? Btw we are very thankful for your great work

  • @poojakatare1497
    @poojakatare1497 2 місяці тому

    A very informative and interesting lecture 😎

  • @nav7848
    @nav7848 2 роки тому

    Love u kunal bhaiya❤❤

  • @jk-sm6qr
    @jk-sm6qr 8 місяців тому

    Thank you Kunal

  • @mrrishiraj88
    @mrrishiraj88 2 роки тому

    Great thanks for very useful content in quite comprehensive form.

  • @gitansh194
    @gitansh194 3 дні тому

    00:05 Quicksort is a crucial sorting algorithm frequently asked in interviews.
    02:11 Quick sort uses pivot to divide elements into smaller and larger groups.
    06:22 Quick Sort uses recursion to position the pivot element correctly after each pass.
    08:20 Quick sort uses recursion to sort arrays efficiently
    12:24 Understanding how to identify violations while sorting using Quick Sort.
    14:35 Moving the pivot to the correct position using recursion
    18:43 Picking the pivot element in quick sort
    20:34 Understanding time complexity and recurrence relation in Quick Sort.
    24:23 Quick sort's time complexity is O(n^2), covered in detail
    26:22 Recurrence relation of merge sort explained with time complexity formulas.
    29:36 Hybrid sorting algorithms combine merge sort and insertion sort for efficiency.
    31:26 Exploring new approaches to solve problems is recommended.
    34:59 Moving elements according to pivot and violating conditions
    36:36 Explanation of the swapping process and recursion call in Quick Sort using recursion.
    40:23 Quick sort is a hybrid sorting algorithm
    41:58 Quick Sort using recursion is a common sorting algorithm.

  • @parmarkamlesh6493
    @parmarkamlesh6493 8 місяців тому

    Hi Kunal, are you planning to launch any playlist?

  • @harshaggarwal1821
    @harshaggarwal1821 2 роки тому +7

    @36:05 you mentioned swapping doesn't happen if array already sorted. But taking {1,2,3,4,5} it does call swap with same indices.

    • @chennayaianjc3306
      @chennayaianjc3306 2 роки тому +2

      I think he said , swap will not happen if it is already sorted .how? in while(s

  • @KartiKKaushiKYt
    @KartiKKaushiKYt 2 роки тому

    My profssor seriously needs to learn from this dude, I was stressing about this so much, this titorial is elite. THANK YOU SO MUCH

  • @vigyanta94
    @vigyanta94 8 місяців тому

    Thanks Kunal

  • @jyotiprakashnayak1123
    @jyotiprakashnayak1123 2 роки тому +4

    best course till date in any platform

  • @ashishgaikwad440
    @ashishgaikwad440 2 роки тому +1

    god level explain ❤️

  • @NavanshK
    @NavanshK Рік тому +1

    @kunal Please continue this course...

  • @prashantmishra9220
    @prashantmishra9220 Рік тому +1

    @kunalKushwaha
    Bhaiya aapne to book follow krke pdhai ki hogi....to hmlog sirf is playlist ko follow krenge kya sach me utna hi knowledge gain kr paenge...kya is playlist me jitna pdhaya gya hai utna hi pdhne se sach me acchi job crack kr paenge?
    pls reply

  • @ritviksaran6199
    @ritviksaran6199 2 роки тому +10

    Kunal bro this is a doubt. After a pass of the outer while loop, how can we confirm that pivot will end in correct index?
    For the array {1, 4, 2, 5, 7, 6, 3} after one pass changes to {1, 4, 2, 3, 7, 6, 5}. 5 was the chosen pivot but it does not end in correct position. The whole algorithm is correct at the end it will give the sorted array, but for this version I think we cannot confirm that after each pass pivot will end up in correct index.

    • @harcharansingh1997
      @harcharansingh1997 2 роки тому

      Yeah bro having same doubt

    • @ritviksaran6199
      @ritviksaran6199 2 роки тому +3

      @@harcharansingh1997 This method ensures that in each pass the pivot ends up in the correct index
      public class Main
      {
      public static void main(String[] args) {
      int [] arr = {1, 4, 2, 5, 7, 6, 3};
      quickSort(arr, 0, arr.length - 1);
      for(int i : arr){
      System.out.println(i);
      }
      }public static void quickSort(int [] arr, int low, int high){
      if(low >= high) return;
      int s = low;
      int e = high - 1;
      int pivot = arr[high];
      while(s pivot){
      e--;
      }
      if(s

    • @MohamedElsayed-pb3oj
      @MohamedElsayed-pb3oj 2 роки тому +1

      The reason you are having doubt is because the algorithm is incorrect. Tried it manually and tried it with the debugger and it still gave the first pass answer. Meaning the algorithm doesn't put the pivot in its intended location.

    • @sachinjain6737
      @sachinjain6737 2 роки тому

      @@MohamedElsayed-pb3oj exactly Elsayed , this algo is wrong, I tried with negative numbers as input and it failed . Tried with {2,5,3,0,8,22,9,-1,-3,-5} as input . @Kunal

    • @sachinjain6737
      @sachinjain6737 2 роки тому

      @@ritviksaran6199 even this got failed @ritvik for input as {2, 5, 3, -3, -1, -22, 0, 8, 22, 9}

  • @PiyushMishra-tq6cl
    @PiyushMishra-tq6cl 3 місяці тому

    Hey Kunal, How did you do the DSA at your time? Like did you rely on tutorial videos or some book?

  • @charon71
    @charon71 2 місяці тому

    best videos here!

  • @sourabhkothari7014
    @sourabhkothari7014 Рік тому

    Best explanation

  • @924_aradhyapatro5
    @924_aradhyapatro5 2 роки тому +1

    This is by far the simplest explaination of Quick Sort that i have found

  • @mihirjadhav5642
    @mihirjadhav5642 2 роки тому +1

    why did you delete your old videos?? where do we find them now?

  • @suhaibalam1040
    @suhaibalam1040 9 місяців тому

    Thanks a lot man

  • @Videolyy
    @Videolyy 9 місяців тому

    loved it..

  • @anukritisingh4479
    @anukritisingh4479 Рік тому +2

    pls upload dp series soon

  • @programmer6953
    @programmer6953 Рік тому

    At 23:07 i dont get why we put pivot at middle while showing t(n) calculation ,at t=0 the left will be empty but right will be n-1 element does it mean we picked first element as pivot ?if not why we showing pivot in t(n) calculation why not just t k +t n-k + alfa n supposedly pivot is at the end of the array for better presentation pls enlighten me on this..

  • @absingh773
    @absingh773 20 днів тому

    13:14 pivot at correct position❌every element at correct position✅

  • @sangamsaini138
    @sangamsaini138 2 роки тому +1

    bhaiya if conditon lagana ka koi jarurat nahi tha uska binna bhi ho jata becouse loop me bhi same conddition hai or isliya if condition likhna ki koi jarurat nahi thi

  • @karanbadhwar4113
    @karanbadhwar4113 Місяць тому +1

    The problem is I did not understand the Time and space Complexity After recurrence relation, as I am do not understand the Maths that you did, it took me more than a week to any how complete the video, but now my question is how can I do that, as I did not understand them Maths you taught, any other way to solve it ?

  • @gauravgautam5963
    @gauravgautam5963 2 роки тому

    Hey , pls tell me one thing that how the primary condition is working , that break condition , that if(low>=hi) return ;

  • @travelnlearn
    @travelnlearn Рік тому

    AMAZING

  • @GunjanThisSide
    @GunjanThisSide 10 місяців тому

    Can you please continue this course and complete it soon

  • @jacksongeorge4047
    @jacksongeorge4047 2 роки тому +1

    hey can you make a video about how to apply remote jobs ...

  • @bishalbhattacharjee850
    @bishalbhattacharjee850 2 роки тому +1

    Great teaching please make a video on heap sort as well...

  • @immortalji
    @immortalji 2 роки тому +1

    Hey bhaiya,
    How to stay away from -ve people? and stay focused toward own goal(SDE OR DATA SCIENTIST).

  • @gourabmukherjee4848
    @gourabmukherjee4848 Рік тому

    How to find the index of the pivot element by using this algorithm ?

  • @suryasrinivasb1629
    @suryasrinivasb1629 2 роки тому

    If I use any other element as pivot instead of middle element, it gives stack overflow error. Can someone help me through this issue?(same algorithm)

  • @swathimarkandan375
    @swathimarkandan375 Рік тому

    Just wow

  • @gowthamselvaraj7793
    @gowthamselvaraj7793 8 місяців тому

    Do a separate series for Dynamic programming bro..

  • @satnamsingh3801
    @satnamsingh3801 Рік тому

    Fabulous

  • @arijitghosh397
    @arijitghosh397 Рік тому

    brother i am not able to solve the linear recurrence relation because the function is f(n) = f(n - 1) + O(n) . When I put a^n for f(n) what to put in place for O(n). I am confuse in that part can anyone help me to understand ?

  • @akashnagar4862
    @akashnagar4862 Рік тому +1

    Before starting this course, i was like ''Java is very tough language'', but after dig into this course till now, I am like ''Java is Fun'', Thankyou man for providing such great course.
    And I would like to request you that please make a course of Collection framework also.
    And you will be boom on UA-cam....trust me the way you transfer your thoughts is really amazing.
    Cheers to the hard work 🥂

  • @prashantgoswami1491
    @prashantgoswami1491 Рік тому +1

    Kunal i am waiting for some other topic vedio please kindly upload it
    I am going to have my placement in next sem

  • @abhishekh_p2721
    @abhishekh_p2721 11 місяців тому

    Can someone suggest can we take mid ele as pivot

  • @swarnayudas9853
    @swarnayudas9853 2 роки тому

    When the course will end?

  • @itsom5294
    @itsom5294 2 роки тому +3

    Hey kunal bring some leetcode maximum subarray type questions problem videos

  • @abhijitmanna4524
    @abhijitmanna4524 Рік тому

    My java code is not compiling at 38:21 any solution ?

  • @rudram4534
    @rudram4534 2 роки тому

    still watching consistently
    😀😀
    😀😀

  • @RaviPatel-rj1re
    @RaviPatel-rj1re Рік тому +2

    this quick sort algorithm not given correct ans for (5,4,1,2,8,7,6,3) can you explain it why?

    • @amine_fadssi
      @amine_fadssi Рік тому +1

      use variable int pivot = arr[mid] not just compare with arr[mid] directly

  • @akashpradhan7908
    @akashpradhan7908 Рік тому +1

    I have tried some udemy courses, watched some UA-cam tutorials on DSA
    ... But damn.. Kunal is a teacher of another league.

  • @joshiomkar1394
    @joshiomkar1394 2 роки тому +4

    Hey bro, I followed your implementation of quicksort, and the array is sorting fine, but there is a problem. Suppose there is an array [2, 4, 5, 3]. Here pivot will be the middle element at index 1 which is 4. Now, all the elements less than 4 should be on the left of 4 and greater at the right, but using your implementation. The resulting array becomes [2, 3, 5, 4]. 4 will get swapped with 3 because 4 and 3 breaks the violation. Then, start will increment and end will decrement and both point to 5. start will break the violation while end doesn't and keeps moving back until 3. Here further swapping will not take place because start > end. To note that the array becomes sorted in the next step because recursion calls quickSort on [2, 3] and [5, 4] but why didn't the 4 get placed in the right position. Is this a behaviour of quicksort or am I missing something? Please respond because this is really confusing me

    • @rishavraj6861
      @rishavraj6861 2 роки тому

      it works well for 2,4,5,3. it gives 2,3,4,5

    • @joshiomkar1394
      @joshiomkar1394 2 роки тому

      @@rishavraj6861 yeah, I noticed that but it works like that only when we are using the high = n instead of n - 1.

    • @rishavraj6861
      @rishavraj6861 2 роки тому +1

      @@joshiomkar1394 how will u take high = n. n is the size of array so, for last index high = n-1. in this video high is also equals to n-1.

    • @nikhilsood6126
      @nikhilsood6126 2 роки тому

      you are right brother......after first pass .....acc. to his theory the left of pivot must be less than pivot but it is not after first pass.......in implementation.......so it was also confusing me.......in actual acc. to his implementation only right will follow the theory not left

    • @ritviksaran6199
      @ritviksaran6199 2 роки тому +4

      True, Actually you said that on the second loop, [2, 3] and [5, 4] will be passed, that is not true, [2, 3, 5] and [4] will be passed. This technique works but it does not ensure that pivot will end up in the correct index. I think he was wrong in that point.

  • @frosted_soul_
    @frosted_soul_ Рік тому

    ku ku ku kunal...kunal....kunal.....kunal.....

  • @vinathasree168
    @vinathasree168 2 роки тому

    Would u pls make a tutorial on regex