You are given a stack ‘S’. Your task is to sort the sack recursively.
Looping through the stack is not allowed. You need to return a stack that is sorted in descending order.
Given stack S = 1 3 2 The output will be 3 2 1 since it is the sorted order.
Input format :
The first line of input contains an integer ‘T’ denoting the number of test cases. The second line of each test case contains a single integer ‘N’, denoting the stack size. The next line contains ‘N’ space-separated integers denoting the elements of the stack, the last element of the input being the top of the stack. If the input is 1 3 2 then the input stack will look like this :
Output format :
For each test case, print the stack in descending sorted order. The output of each test case will be printed in a separate line.
You do not need to print anything. It has already been taken care of. Just implement the given function.
1 <= T <= 5 1 <= N <= 2000 0 <= S[i] <= 1000 Where ‘T’ is the total number of test cases, and 'N’ is the size of the stack, and 'S[i]' is the element of the stack.
The main idea is to remove the elements recursively from the stack until the stack becomes empty and then insert those values (from the call-stack [A call-stack is the stack that is made in the memory when recursive-calls are made. ]), back into the stack in a sorted position.
- In each call, remove the top element from the stack.
- Make a recursive call to the function sortStack.
- After the call, insert the element in the stack in a sorted fashion.
- This can be done by removing the top element from the stack until the topmost element is greater than the current element that we want to insert.