写程序将一个栈按升序排序

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("");
    }

  

猜你喜欢

转载自www.cnblogs.com/hu95/p/10583007.html
今日推荐