1.介绍
写程序将一个栈按升序排序
代码其实很简单,奈何网络上太多垃圾代码,本来打算参考下别人的思想的,结果发现都看着不对劲,反正大家想学习的话可以关注我博客,我的都是自己验证过的,有问题可以评论,我会立马修改的。
本方法是在插入后调用的
2.解决思想
2.1如果栈顶元素小于其后面的元素,先把后面的元素放入缓存栈中,然后再把元素放入缓存栈,这样就可以保证,缓存栈中的数据是降序的
2.2多次遍历,保证所有数据都降序放到缓存栈中
2.3遍历缓存栈,把数据放回原来的栈中
3.代码
static void sortStack(Stack<Integer> stack) { Stack<Integer> temp = new Stack<Integer>(); while (!stack.empty()) { int val = stack.pop(); while (!stack.empty() && val < stack.peek()) { temp.push(stack.pop()); } temp.push(val); } while (!temp.empty()){ stack.push(temp.pop()); } }
代码测试块:
public static void main(String args[]){ Stack<Integer> stack = new Stack<Integer>(); stack.push(1); stack.push(3); stack.push(2); sortStack(stack); System.out.println(""); }