• 4.借助一个栈空间,将一个栈进行进行排序(以整型元素为例,从栈顶到栈底依次递增排序)


    分析:借助一个栈空间(这里我们称为辅助栈),将目标栈中的元素按从栈顶到栈底依次递减的顺序添加到辅助栈中,然后将辅助栈中的元素逐个弹出并压入目标栈即可。

    思路:先申请一个辅助栈helpStack,然后弹出目标栈的栈顶元素top,此时如果helpStack为空则直接将top压入helpStack,否则将helpStack的栈顶元素与top进行比较,如果top大于等于helpStack的栈顶元素大则直接将top压入helpStack,反之将helpStack栈顶元素弹出并压入目标栈中,让top与此时的helpStack栈顶元素进行比较,直至top小于helpStack的栈顶元素或者helpStack为空时,将top元素压入helpStack。以上整个操作当目标栈中元素全部弹出并压入helpStack后结束。此时helpStack栈中的元素从栈顶到栈底依次递减,然后将helpStack栈元素弹出并添加到目标栈中,直到helpStack栈为空,程序结束。

    附上Java代码:

    class SortingStack{
        public void ascendingSort(Stack<Integer> stack){
            Stack<Integer> helpStack=new Stack<>();//辅助栈
            while(!stack.isEmpty()){
                Integer top=stack.pop();
         /* 下面的注释部分是依思路中的文字写的,当写完后发现while循环已经包括了helpStack为空的情况,所以可以进一步优化如下*/
           //     if(helpStack.isEmpty()){
           //         helpStack.push(top);
            //    }else {
                    while (!helpStack.isEmpty() && helpStack.peek() > top) {
                        stack.push(helpStack.pop());
                    }
                    helpStack.push(top);
           //     }
            }
            while(!helpStack.isEmpty()){
                stack.push(helpStack.pop());
            }
        }
    }
  • 相关阅读:
    js中拼接字符串
    js中的fliter(),map(),forEach()方法
    美化下拉框select箭头部分(不彻底)
    offsetWidth、clientWidth、scrollWidth、scrollTop、scrollLeft等属性图示
    js事件代理(事件委托)最简单的理解
    ubuntu14.04 caffe+cuda-7.0配置
    ubuntu 中安装和删除软件总结
    C++中的容器可以同时保存各种数据类型
    string的用法
    linux查看GPU的配置和使用信息
  • 原文地址:https://www.cnblogs.com/quxiangxiangtiange/p/10139665.html
Copyright © 2020-2023  润新知