每日刷题day02---将无序栈转化为有序栈

97 阅读1分钟

问题描述就如题目所示,如何解决这个问题呢?注;我们实现升序

例如 stack = [10,30,20,40,60,50]

首先当stack.length <=1 return stack

我们首先stack.pop()得到第一个值记为num = stack.pop

然后我们将num 与 stack.pop()进行比较

如果 num > stcak.pop()时候,这两个元素已经是升序,不用做其他处理,此时我们然后在按照上述方式处理 stack剩下的元素,最后在把num push到 stack中

如果 num < stack.pop()时候,那么我们需要将这两个元素交换,将num放进stack中,将stack.pop()的值赋给num,然后在按照上述方式处理 stack剩下的元素,最后在把num push到 stack中

    function orderStack(stack){
        const _sort= ()=>{
            if(stack.length <=1) return stack
            let num = stack.pop()
            if(num < stack.pop()){
                let temp = stack.pop()
                stack.push(num)
                num = temp
                _sort(stack)

            }else{
                _sort(stack)
            }
            stack.push(num)
        }
        let index = stack.length
        while(index>0){
            _sort() //每次一个循环结束,栈底的元素最小
            index--

        }
        return stack

    }