Сортировка стека без лишних пробелов совершенно невозможна.
По крайней мере, не приходить мне в голову.
Мы, конечно, можем использовать стек рекурсии как дополнительное пространство здесь.
Приведенный ниже подход может быть полезным.
Мой подход - O (N ** 2). Здесь я перебираю стек N раз, каждый раз фиксируя i-й элемент в стеке.
Сначала исправили нижний элемент, выдвинув N элементов и нажав min_element и
Вторая попытка зафиксировала 2-й элемент снизу, выдвинув N-1 элементов и нажав min_element, за исключением того, что был передан до этого
И так далее.
Подробнее см. Код ниже.
stack<int> stk;
int sort_util(stack<int> &stk,int n,int mn)
{
if(n==0)
{
stk.push(mn);
return mn;
}
int vl = stk.top();
stk.pop();
int fmin = sort_util(stk,n-1,min(mn,vl));
if(fmin==vl)
return INT_MAX;
else
stk.push(vl);
return fmin;
}
void sort_stack(stack<int> &stk)
{
for(int i=stk.size();i>1;i--)
sort_util(stk,i,stk.top());
}