Quick Sort For Beginners | Strivers A2Z DSA Course

Поділитися
Вставка
  • Опубліковано 31 гру 2024

КОМЕНТАРІ • 500

  • @takeUforward
    @takeUforward  Рік тому +191

    Let's march ahead, and create an unmatchable DSA course! ❤
    The worst case complexity will be O(N ^ 2) if we end up choosing the largest or smallest element as the pivot always. We will add this in the notes in the description. I missed this in the video.

    • @yashhokte1020
      @yashhokte1020 Рік тому +10

      Yes striver , even i was thinking same that you didn't explain this thing , btw thankyou so much for this much crystal clear explaination ..

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

      Hi striver @takeUforward ,
      when are you going to release video solutions for string type problems and heaps?

    • @yaswanthmitta8983
      @yaswanthmitta8983 Рік тому +10

      There is a minor mistake in your algo at 23:54 in while loop condition must be arr[i]

    • @teen_python_go9947
      @teen_python_go9947 8 місяців тому +2

      Since, we are always choosing pivot to be the first element of the array, we can always avoid the O(n^2) case by pre-checking if the array is pre-sorted (with O(n) Time Complexity) and if it is not then only feed it into the quick sort function.

  • @yashsharma6112
    @yashsharma6112 Рік тому +219

    I have to state it that "I tried to learn all sorting techniques various time. I learned but after a few days I forgot. But when you just added the real meaning of each sorting techniques. Like why it is called as selection sort and so on.... SO now I just remember their meanings and write the algorithm on my own." Thank you very much. Loved your teaching style

  • @deepanshuthakur140
    @deepanshuthakur140 Рік тому +66

    I tried to learn this from every yt channel but striver is the one i got it from, respect++

    • @navagharkiran5769
      @navagharkiran5769 4 місяці тому +1

      then you haven't tried Abdul Bari

    • @deepanshuthakur140
      @deepanshuthakur140 4 місяці тому +2

      @@navagharkiran5769 sadly I did, its not that abdul bari is not good, its me who is dumb uk but striver made me understand it anyhow

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

      @@navagharkiran5769 abdul bari is better for college academics but striver is for campus selections

  • @kingreja5894
    @kingreja5894 Рік тому +24

    //for descending
    while (arr[i]>=pivot && i

  • @omkarsawant9267
    @omkarsawant9267 Рік тому +41

    Quick Sort's in-place partitioning makes it more memory-efficient than Merge Sort in practice, but the worst-case space complexity can be higher when the partitioning is unbalanced.
    Time Complexity:
    Best Case: O(n log n) when the pivot choices consistently lead to balanced partitions.
    Average Case: O(n log n)
    Worst Case: O(n^2) when the pivot choices consistently lead to unbalanced partitions. However, with good pivot selection strategies (e.g., using the median element), this can be mitigated.
    Space Complexity:
    O(log n) auxiliary space for the recursive call stack in the best and average cases.
    O(n) in the worst case when the partitioning is highly unbalanced.
    Quick Sort's in-place partitioning makes it more memory-efficient than Merge Sort in practice, but the worst-case space complexity can be higher when the partitioning is unbalanced.
    Quick Sort tends to perform well in practice and is often faster than other O(n log n) algorithms, but its worst-case time complexity is worse than Merge Sort.
    Merge Sort's space complexity makes it less memory-efficient compared to some other sorting algorithms, but its stable performance and guaranteed O(n log n) time complexity in all cases make it a preferred choice for certain scenarios.
    Space Complexity:
    O(n) additional space is required for the temporary arrays during the merging process.
    It has a space complexity of O(n) due to the need for additional space for merging.

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

      Appreciate the effort you put for writing this comment 😇❤

    • @nayankhuman1043
      @nayankhuman1043 6 місяців тому +1

      Thanks for the comment. i was looking for it.

    • @dreamer12n
      @dreamer12n 5 місяців тому

      Hey can you give me the code for pivot = median element pls??

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

      ​@@dreamer12nwhat kind of code do you want

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

      ​@@dreamer12nJust set pivot = (low + high)/ 2 or in a better way to deal with larger numbers make it low +(high -low)/2

  • @Kaushik846
    @Kaushik846 Рік тому +28

    Probably one of the crisp and to the point explanation of quick sort algorithm available online!!

  • @ParasSharma-mf8or
    @ParasSharma-mf8or Рік тому +47

    Thanks for this amazing lecture,this is my humble request please complete this course as soon as possible.

  • @adityamaheshwari4250
    @adityamaheshwari4250 Рік тому +21

    Really you make everything a cakewalk!
    Thank you so much sir, it takes a big heart to do such a lot for the community for free❤

  • @FunkyPanda6263
    @FunkyPanda6263 Рік тому +31

    1 video every 2 days...
    Seems TRUE ❣️

  • @AdityaSharma-hs8os
    @AdityaSharma-hs8os Рік тому +7

    please upload full course you are douing a good job bhaiyaaa ,you are really a honest teacher other youtubers who has million subscribers just make us fool on name of dsa course ,they just tell the problem and paste the soultion but you solve every aspect -f our doubt please cpmplete this and dont worry of views and watch time,time will come when everyone will know who is the best teacher on youtube for dsa

  • @isaacreyes7563
    @isaacreyes7563 5 місяців тому +2

    Damn, I have been looking at sort, recursion, etc forever. I was first confronted with merge/quicksort back in 2019. Been looking at them from various other sources over the years but nobody ever explained it like you do. You are absolutely amazing at this stuff. Idk where you are in life but I hope you go onto make amazing things because someone with this in depth knowledge shouldn't be stuck teaching!

    • @tanmayjivnani865
      @tanmayjivnani865 5 місяців тому

      Don't worry he is working at Google. Doing great in life :)

  • @ADITYASRIVASTAVA-hk3bw
    @ADITYASRIVASTAVA-hk3bw Місяць тому

    00:06 - Quick sort is a sorting algorithm with time complexity of n log n and space complexity without using an extra temporary array.
    04:36 - Pick up elements and place them in their correct place in a sorted array.
    09:07 - The quick sort algorithm works by picking a pivot, placing it in its correct place, and recursively sorting the left and right arrays.
    13:48 - Sorting an array using the partition index
    18:43 - Quicksort algorithm explained in a simple way
    22:51 - The algorithm involves partitioning an array based on a pivot element.
    27:23 - Implementing the Quick Sort algorithm
    31:23 - Quick sort algorithm has a time complexity of n log n and a space complexity of O(1).

  • @parthmangalkar
    @parthmangalkar Рік тому +4

    Understood!
    Thank you!! You are the best!
    Thanks a lot for making this DSA playlist! It really is helping me a lot!

  • @Manishgupta200
    @Manishgupta200 Рік тому +12

    Here is my Assignment question solution :
    #include
    using namespace std;
    int partition(vector &arr, int low, int high){
    int pivot = arr[low];
    int i = low;
    int j = high;
    while(i < j){
    while(arr[i] >= pivot && i = low + 1) j--;
    if(i < j) swap(arr[i], arr[j]);
    }
    swap(arr[low], arr[j]);
    return j;
    }
    void qs(vector& arr, int low, int high){
    if(low < high){
    int pIndex = partition(arr, low, high);
    qs(arr, low, pIndex - 1);
    qs(arr, pIndex + 1, high);
    }
    }
    int main(void){
    // vector v = {4, 3, 2, 1};
    vector v = {4, 3, 2, 1, 4, 7, 5, 6};
    int n = v.size();
    qs(v, 0, n-1);
    for(auto it : v) cout

  • @Manoj_IIC-Admin
    @Manoj_IIC-Admin Рік тому +22

    at time 23:52 it should be pivot not ar[pivot] thanks bhaiya

  • @alessandrocamilleri1239
    @alessandrocamilleri1239 Рік тому +8

    Excellent explanation as usual. Thank you.
    I am posting the iterative version which should further save on recursion call stack space. I have used a queue as the data structure but stack works just as well.
    void quickSort (vector &nums)
    {
    int n = nums.size();
    queue q;
    q.push({0, n-1});
    int low, high, pivot, i, j;
    while(!q.empty())
    {
    low = q.front().first;
    high = q.front().second;
    q.pop();
    if (low >= high) continue;
    pivot = nums[low];
    i = low; j = high;
    while (j > i)
    {
    while (nums[i] pivot && j > 0)
    j--;
    if (j >= i)
    swap(nums[i], nums[j]);
    }
    swap (nums[low], nums[j]);
    q.push({low, j-1});
    q.push({j+1, high});
    }
    }

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

      So Yah u tried the iterative version of Quick Sort but still you are using the space what the Recursive func calls use in func call stack in the QUEUE FORM. O(logN) Queue takes as extra space.
      Like the point is Quick sort no matter what -> You can further optimize. Func Stk Space or in Iterative normal stack or queue space is needed.
      As we need to store it somewhere -> what are the next range of places where it is unsorted.
      Either use the system's func call stack or make ur own.

  • @tasneemayham974
    @tasneemayham974 Рік тому +11

    CODE FOR DESCENDING (JAVA):
    public void quickSort(int[] arr, int low, int high){
    if(low low){
    j--;
    }
    if(i

    • @DineshKumar-pw7qb
      @DineshKumar-pw7qb Рік тому

      When I try to run this code(using array), I getting no output and the code runs for infinite time. When I try with ArrayList, I am getting output.
      Explain why? This put me into severe headache

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

      @@DineshKumar-pw7qb Heyy!! You mean my code?
      Either way, can you send me the code you are working on. I want to try it. How about that? Maybe we can fix it together?

    • @DineshKumar-pw7qb
      @DineshKumar-pw7qb Рік тому

      @@tasneemayham974bro are sure about your code is working well with array?

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

      @@DineshKumar-pw7qb Hey, mate! I copied my code, and yes it works with arrays. It doesn't give me errors or infinite loops, but...
      this line:
      while(arr[i] > pivot && i < high)
      I missed the =. I am so sorry. I should be:
      while(arr[i] >= pivot && i < high)
      Check it out now. But as I understand, the problem with your code is the array itself, yes? Not the output? If you want you can send the code. Because mine works well with array.
      P.S.: I will edit the original comment, and put the equal.

  • @tanmaykarmakar6224
    @tanmaykarmakar6224 Рік тому +23

    Quick sort in Descending order-(PYTHON)
    arr=[25,1,8,7,32,2,5]
    def piviot(arr,high,low):
    piviot=arr[high]
    i=high
    j=low
    while(i=piviot and i

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

      Hey I haven't done a dryrun of your code but as i has index of high how can in increment in the while loop?

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

      yes make sense and have to chnage the while (i

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

      shouldn't it be while(i > j) ?

  • @animeshmishra6280
    @animeshmishra6280 Рік тому +28

    how do you know which doubts are going to come in my mind. GREAT LECTURE SIR 🔥

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

      Because once he was also in the same place as we are now and he worked hard to reach this point now he is helping us

  • @ArunKumar-sk9jl
    @ArunKumar-sk9jl 5 місяців тому

    A great man with the best of the best teaching skills and a kind attitude to make it free is awesome ❤

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

    striver you are the best out of best....this tutorial is just amazing and you are like god for us A big thank you so much for your effort 🙂

  • @pranshuatrey
    @pranshuatrey Рік тому +4

    This is gold... Plz keep doing this..

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

    For Descennding Order Sorting ->
    //Just Reverse the inequality sign in partition function :-
    #include
    int partition(vector&arr,int low,int high){
    int pivot =arr[low];
    int i=low ,j=high;
    while(i

  • @SharathS-s9i
    @SharathS-s9i 4 місяці тому

    for the assigment problem just change the condition while (i < j) {
    while (arr[i] > pivot && i

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

    it's very understandable way you teach. thank you for this amazing lecture

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

    Understood, will be a quick way to remember the algorithm, well taught!! Thanks

  • @ShivamGupta-xw6gh
    @ShivamGupta-xw6gh Рік тому +1

    best explanation of quick sort on youtube

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

    love from pakistan we need these type of legend to teach progamming

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

    Understood.... 💯💯 Excited for Arrays playlist❤

  • @keshariaman
    @keshariaman Рік тому +5

    Thanks a lot for Quick Short. Feels easier to understand 🥰

  • @ahssanakhtar5746
    @ahssanakhtar5746 7 місяців тому

    Excellent content about DSA .I am follwing you A-Z coarse and improve my self in DSA day by DSA Thanks for making such a amazing content

  • @ShivanshSingh-os5nd
    @ShivanshSingh-os5nd 4 місяці тому +7

    16 Aug 2024, 2:00 a.m.🎯🔥

  • @shubhamagarwal1434
    @shubhamagarwal1434 5 місяців тому +9

    #Free Education For All...... # Bhishma Pitamah of DSA...You could have earned in lacs by putting it as paid couses on udamey or any other elaerning portals, but you decided to make it free...it requires a greate sacrifice and a feeling of giving back to community, there might be very few peope in world who does this...."विद्या का दान ही सर्वोत्तम दान होता है" Hats Off to you man, Salute from 10+ yrs exp guy from BLR, India.......

  • @DeepakKumar-xj4ul
    @DeepakKumar-xj4ul 9 місяців тому

    for decreasing Quick Sort:-
    int partition(vector &arr, int low, int high) {
    int pivot = arr[low];
    int i = low;
    int j = high;
    while (i < j) {
    while (arr[i] >= pivot && i = low + 1) {
    j--;
    }
    if (i < j) {
    swap(arr[i], arr[j]);
    }
    }
    swap(arr[low], arr[j]);
    return j;
    }
    void quickSort(vector &arr, int low, int high) {
    if (low < high) {
    int pIndex = partition(arr, low, high);
    quickSort(arr, low, pIndex - 1);
    quickSort(arr, pIndex + 1, high);
    }
    }
    vector sortArray(vector &arr) {
    quickSort(arr, 0, arr.size() - 1);
    return arr;
    }

  • @CodeBoost8375
    @CodeBoost8375 Рік тому +4

    Thanks for recursive effort brother.And till now all your lectures are absolutely awesome 🔥🔥

  • @WellbeingWarior
    @WellbeingWarior 4 місяці тому

    Quick sort in Descending order in Python:
    def qS(array):
    if len(array) pivot]
    return qS(elm_grater_than_pivot) + elm_equal_pivot + qS(elm_less_than_pivot)

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

    Understood sir.
    For descending order:
    int partitionFunction(int arr[], int low, int high){
    int i = low, j = high, temp;
    int pivot = arr[low];
    while(ipivot and i

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

    Manhhhh 🥵, you are awesome. I can see the effort you are putting in! Thanks a lot! ❤

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

    Best explanation ever ❤️❤️❤️
    Thanks bhaiya

  • @zyzzbrah9429
    @zyzzbrah9429 7 місяців тому +1

    int partition (int arr[], int low, int high)
    {
    int p=arr[low];
    int i=low,j=high;
    while(i=p && i

    • @shailesh3348
      @shailesh3348 6 місяців тому

      I also completed 2 steps can we connect?

  • @madhumithaakula7666
    @madhumithaakula7666 2 місяці тому +1

    Thank You anna because of u I have learned something new today🙂

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

    Understanding everything u r teaching to us u r magician striver

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

    Thanks for giving this content for free it helps me a lot

  • @student_03
    @student_03 4 місяці тому

    checking for out of bounds like this makes it simple and natural
    while (i pivot) {
    j--;
    }

  • @Gurunat16
    @Gurunat16 6 місяців тому +4

    26:58 That will be |1 3 2| 4. Right?

  • @AbhishekKumar-cd4gg
    @AbhishekKumar-cd4gg Рік тому

    // for descending order
    just we have to do the tweaks in the how we are selecting elements when which we are stopping when we are finding element smaller in left and stop when we find the element greater the pivot then we just we swap it
    than it goes in the recursion stack
    public class Quicksort {
    static int partiton(int arr [] , int low , int high ){
    int pivot = arr[low];
    int i= low;
    int j = high;
    while (i < j ) {
    while (arr[i] >= pivot && i = low + 1 ) {
    j--;
    }
    if(i < j ){
    int temp = arr[i];
    arr[i] = arr [j];
    arr[j] = temp;
    }
    }
    int temp = arr[j];
    arr[j] = arr[low];
    arr[low] = temp;
    return j ;
    }
    static void quicksort(int arr [] , int low , int high){
    if(low < high ){
    int PartionIndex = partiton(arr,low,high) ;

    quicksort(arr, low , PartionIndex-1);
    quicksort(arr, PartionIndex+1 , high);
    }

    }
    public static void main(String[] args) {
    int arr [] = {10, 80, 30, 90, 40};
    int n = arr.length-1;
    quicksort(arr, 0, n);
    for (int i : arr) {
    System.out.print(i + " ");
    }
    }
    }

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

    Quick Sort in Descending Order (C++):
    int partitionArray(int input[], int start, int end) {
    int pivot = input[start];
    int i = start;
    int j = end;
    while (i < j) {
    while (input[i] >= pivot && i < end) {
    i++;
    }
    while (input[j] < pivot && j > start) {
    j--;
    }
    if (i < j) {
    int temp = input[i];
    input[i] = input[j];
    input[j] = temp;
    }
    }
    input[start] = input[j];
    input[j] = pivot;
    return j;
    }
    void quickSort(int input[], int start, int end) {
    if (start >= end) return;
    int partition = partitionArray(input, start, end);
    quickSort(input, start, partition - 1);
    quickSort(input, partition + 1, end);
    }

  • @AniketSingh-gm9nh
    @AniketSingh-gm9nh 5 місяців тому

    u r just amazing. keep educating man u r blessing for us.❤

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

    Your explanations are the best 💕👌👌

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

    Kaha se sikha hai aise padana?
    vai koi vi nahi hai tumhare jaisa.
    Maza aa gaya

  • @pradeep6635
    @pradeep6635 7 місяців тому

    understood Bhayya.The best explanation in youtube😎

  • @tamoghnasaha2667
    @tamoghnasaha2667 10 днів тому

    Why we are using while (i

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

    Thanks Striver :)

  • @SwatiSingh-ys6hm
    @SwatiSingh-ys6hm Рік тому

    Damn it, i have learnt sorting algorithms a lot of times, but i aways manage to somehow forget.But after seeing this video now i understand it in so much more detail and depth which i earlier didn't even notice. thanks you soo much striver !

  • @sonalikharwar4269
    @sonalikharwar4269 Рік тому +5

    Instead of 3,2,1 it should be 1,3,2 coz we have done swapping b/w 4 & 1 like swap(arr[low], arr[j]) right ?

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

    Can't thank you more. Great lectures. Appreciate it.

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

    Understood! Super amazing explanation as always, thank you very much!!

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

    Understood,Thanks striver for this amazing video.

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

    Crystal clear bhaiya 😍

  • @OmPrakash-268
    @OmPrakash-268 4 місяці тому

    awesom explanation , love it learning DSA .

  • @nikhild.20
    @nikhild.20 Рік тому

    Code for descending order :-
    #include
    int fn(vector &arr,int low, int high){
    int pivot = arr[low];
    int i = low;
    int j = high;
    while(i=pivot && i

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

    Best , Detailed and Crisp

  • @Abhishek-vc5bp
    @Abhishek-vc5bp 5 місяців тому +1

    For Decending order
    #include
    using namespace std;
    int pick_place_pivot(int arr[],int low,int high){
    int pivot=arr[low];
    int i=low,j=high;
    while(i= pivot && i=low+1) j--;
    if(i> n;
    int arr[n];
    for(int i=0;i> arr[i];
    quick_sort(arr,0,n-1);
    for(int i=0;i

  • @diversestream66
    @diversestream66 6 місяців тому

    for descending order
    const partition = (arr, low, high) => {
    let pivot = arr[low];
    let i = low;
    let j = high;
    while (i < j) {
    while (arr[i] >= pivot && i < high) {
    i++;
    }
    while (arr[j] low) {
    j--;
    }
    if (i < j) {
    let temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
    let temp = arr[low];
    arr[low] = arr[j];
    arr[j] = temp;
    return j
    };
    const quickSort = (arr, low, high) => {
    if (low < high) {
    let partitionIndex = partition(arr, low, high);
    quickSort(arr, low, partitionIndex - 1, high);
    quickSort(arr, partitionIndex + 1, high);
    }
    console.log(arr)
    };

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

    Quicksort in python.
    def partition(L,lower,upper):
    i=lower
    pivot=L[lower]

    for j in range(lower+1,upper+1):
    if(L[j]

  • @venkatesasrikanthdhulipala9486

    //Code for reversing the sorted array using quick sort
    // feel free to review
    class ReverseSortedArray {
    public static void main(String[] args) {
    int[] arr = {1,3,5,2,7,6,8,10};
    Qsort(arr,0,arr.length - 1);
    for(int i :arr){
    System.out.print(i + " ");
    }
    }
    public static void Qsort(int[] arr,int low,int high){
    if(low < high){
    int partition = parrtitionArrray(arr,low,high);
    Qsort(arr,low,partition - 1);
    Qsort(arr,partition + 1,high);
    }
    }
    static int parrtitionArrray(int[] arr,int low,int high){
    int val = arr[low];
    int i = low,j = high;
    while(i < j){
    while(val = low - 1){
    j--;
    }
    if(i < j){
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
    int temp = arr[low];
    arr[low] = arr[j];
    arr[j] = temp;
    return j;
    }
    }

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

    Understood bhaiya! Thank you

  • @shivamcanada
    @shivamcanada 4 місяці тому

    very well explained brother appreciate your efforts

  • @AbdullahKhan-et6qo
    @AbdullahKhan-et6qo Рік тому

    Was eagerly waiting for your videos 🙌

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

    Understood sir.....u r the best👍💞

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

    Understood
    Striver on TOP!

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

    You rocks the DSA

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

    Completely Understood 👍👍

  • @rishabhkumar-qs3jb
    @rishabhkumar-qs3jb 8 місяців тому +1

    Excellent explanation :)

  • @ProgrammerSalman031
    @ProgrammerSalman031 5 місяців тому +1

    public:
    // Function to sort an array using quick sort algorithm in descending order.
    void quickSort(int arr[], int low, int high)
    {
    if (low < high) {
    int pIndex = partition(arr, low, high);
    quickSort(arr, low, pIndex - 1);
    quickSort(arr, pIndex + 1, high);
    }
    }
    public:
    int partition(int arr[], int low, int high)
    {
    int pivot = arr[low];
    int i = low;
    int j = high;
    int temp;
    while (i < j) {
    while (arr[i] >= pivot && i = low + 1) {
    j--;
    }
    if (i < j) {
    temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
    temp = arr[low];
    arr[low] = arr[j];
    arr[j] = temp;
    return j;
    }
    }

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

    Why do we ignore recursion stack space when calculating Space Complexity? I think that should count.

  • @nyx1284
    @nyx1284 4 місяці тому

    by the way, there exist some examples where the code shown can return in out of vector subscript error because the partition index might be returned as 0 and when we try to access pIndex-1 it will of course crash. so put an extra little check where the code just returns if pIndex is 0.

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

    Awesome explanation! TYSM for the videos

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

    // condition i

    • @ShawnGrant-t9k
      @ShawnGrant-t9k 5 місяців тому

      Yes you are right, it should evaluate this first as a precaution.

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

    class Solution {
    public static void quickSort(int[] arr,int low,int high) {
    if(low

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

    understood everything sir so far all sorting techniques

  • @balupathakokila4446
    @balupathakokila4446 5 місяців тому +5

    bro the worst case of quick sort is taking O(N^2) and in leet code giving the time limit exceed

  • @ankit-yj7hk
    @ankit-yj7hk 7 місяців тому

    understand bhaiya !!!
    thank uh so much

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

    After checking all lectures on internet...None has explained better than you

  • @lwnflash2123
    @lwnflash2123 8 місяців тому +2

    Is recursive stack space not required while computing space somplexity?

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

    Java Code:
    public class QuickSort {
    public static void main(String[] args) {
    int [] nums = {3,4,2,1,5,0};
    quickSort(nums, 0, nums.length -1);
    for(int element : nums){
    System.out.print(element + " ");
    }
    }
    public static void quickSort(int[] nums, int low, int high) {
    if(low >= high) return ;
    int partitionIndex = partition(nums,low,high);
    quickSort(nums,low,partitionIndex-1);
    quickSort(nums,partitionIndex +1, high);
    }
    public static int partition(int[] nums, int low , int high){
    int pivot = nums[low];
    int i = low, j = high;
    while(i < j ){
    while(i pivot) j--;
    if(i < j) swap(nums, i, j);
    }
    swap(nums,low,j);
    return j ;
    }
    public static void swap(int [] nums, int i , int j){
    int temp = nums[i];
    nums[i] = nums[j];
    nums[j]= temp;
    }
    }

  • @sameer_701
    @sameer_701 Рік тому +9

    There's a mistake in pseudocode:
    Timeline : 23:50
    while((are[i] = low))
    {
    j++;
    }
    It will not be arr[pivot].

    • @takeUforward
      @takeUforward  Рік тому +7

      Yes!

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

      can you please tell why it's giving wrong output for swapping this as
      swap(arr[j], pivot) ; before return statement

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

      @@simranbandhu9926 exactly...arr[low] and pivot is the same thing?? right?? then why its giving wrong output if we use pivot

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

      @@takeUforward bhaiya please tell why is it giving wrong output if we use pivot instead of arr[low] just before return

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

      , because the pivot itself, is an element and we have to swap the array value for which we need to write array[low]in place of pivot.

  • @Pawankumar-i8c
    @Pawankumar-i8c 2 місяці тому

    thank you so muchbhiaya for this masterpiece

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

    you are my God , thanks man 🥰

  • @THE-MYSTIC
    @THE-MYSTIC Рік тому +1

    Thanks striver this video helped me ❤

  • @MohammadEhshan-ve6uz
    @MohammadEhshan-ve6uz 5 місяців тому

    Everything will be same , only we have to do some changes in partition function to get array in decreasing order:
    int decendingPartition(int arr[],int low,int high){
    int pivot=arr[low];
    int i=low;
    int j=high;
    while(i=pivot && i

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

    After long time ❤️❤️

  • @Yash75585
    @Yash75585 7 місяців тому

    home work question (to print in decreasing order)-
    #include
    using namespace std;
    int partition(vector &arr, int low, int high){
    int pivot=arr[low];
    int i=low;
    int j=high;
    while(i=arr[low] && i

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

    Thank you so much sir for this content. Very good explanation

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

    Reverse Sort need only 2 changes from original code :
    while(arr[i]>=pivot && i

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

    nice way of explaination

  • @poojaraman6663
    @poojaraman6663 6 місяців тому

    Understood...thank u sir🙂

  • @yashpandey7
    @yashpandey7 6 місяців тому

    understood , Step 2 completed :)

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

    Thank you bhaiya. Amazing explanation ❤

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

    # code for reverse sorted i.e. descending sort
    def quickSort(self,arr,low,high):
    if low < high:
    p_index = self.partition(arr,low,high)
    self.quickSort(arr,low,p_index-1)
    self.quickSort(arr,p_index+1,high)

    def partition(self,arr,low,high):
    # modified
    pivot = arr[high]
    i = low
    j = high
    while i < j:
    #modified
    while arr[i] >= pivot and i = low+1:
    j -= 1
    if i < j:
    arr[i], arr[j] = arr[j], arr[i]
    arr[low], arr[j] = arr[j],arr[low]
    return j