美文网首页
用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序

作者: Tank_Mao | 来源:发表于2020-10-04 00:15 被阅读0次

    【题目】
    一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,秩序申请一个栈。 除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?

    【要求】
    要求即题目。

    【解答】
    将要排序的栈记为stack,申请的辅助栈记为help。在stack上进行pop操作,弹出的元素记为cur

    package pers.mao.stackAndQueue.demo_05;
    
    import java.util.Stack;
    
    /**
     * @author Mao Qingbo
     * @date 2020-10-03
     */
    public class Sort {
        public void sortStackbyStack(Stack<Integer> stack){
            Stack<Integer> help = new Stack<Integer>();
            //如果cur小于或等于help栈顶元素,则将cur弹入help
            //如果cur大于help栈顶元素,则将help栈顶元素弹入stack
            while(!stack.isEmpty()){
                int cur = stack.pop();
                while(!help.isEmpty()&&cur>help.peek()){
                    stack.push(help.pop());
                }
                help.push(cur);
            }
            //将help元素弹入到stack
            while(!help.isEmpty()){
                stack.push(help.pop());
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:用一个栈实现另一个栈的排序

          本文链接:https://www.haomeiwen.com/subject/iivguktx.html