栈里的元素升序排列

//写一个算法将栈里的元素升序排列。栈的实现未知,算法只能借助栈完成,可使用的函数有push,pop,top,empty等
//可借助另外一个栈来完成排序,思想是从原始栈里依次弹出元素放入辅助栈,每当将要压入的元素使得辅助栈不是升序排列,就将辅助栈里的元素重新压入原始栈,直到辅助栈里的元素都小于当前将要压入的元素,然后再压入当前的元素。
//如此继续将原始栈里元素压入辅助栈,直到原始栈为空。
//算法时间复杂度O(n2)
stack<int> sort(stack<int> s) { stack<int> r; while(!s.empty()) { int temp=s.top(); s.pop(); while(!r.empty()&&temp<r.top()) { s.push(r.top()); r.pop(); } r.push(temp); } return r; }

 

posted @ 2015-04-06 21:32  Vae永Silence  阅读(521)  评论(0编辑  收藏  举报