Naive sorts like Bubble Sort and Insertion Sort are inefficient and hence we use more efficient algorithms such as Quicksort and Merge Sort. But then, these two sorts are recursive in nature, and recursion takes up much more stack memory than iteration (which is used in naive sorts) unless implemented as a tail call. How can then Quicksort and Merge Sort be more efficient than the naive sorts?
(People have identified this question as a duplicate of this question. But this is not quite the question I asked. The linked question asks about Big O notation in general whereas I am specifically concerned about the space complexity of recursive sorts. Please understand the difference.)