栈的排序算法:
第一种,类似于插入排序,(允许额外利用一个栈),每一步的循环不变式是temp中的元素是有序的。直接上代码:
void sortStack(stack
& s)
{
if(s.empty()) return;
stack
temp; //辅助栈
while(!s.empty())
{
int cur = s.top();
s.pop();
//每一次将s的栈顶的元素取出,插入到temp的合适的位置上,插入位置之上的元素弹回s。
if(temp.empty())
{
temp.push(cur);
continue;
}
while(!temp.empty())
{
if(temp.top() < cur)
{
s.push(temp.top());
temp.pop();
}
else
{
temp.push(cur);
br