问题描述就如题目所示,如何解决这个问题呢?注;我们实现升序
例如 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
}