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

Posted 牛哄哄的柯南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用一个栈实现另一个栈的排序相关的知识,希望对你有一定的参考价值。

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

【题目】

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

【思路】

需要排序的栈:stackData,用一个辅助栈:stackHelp

从stackData开始pop,记录为cur,那cur和stackHelp的栈顶比较,如果stackHelp的栈顶比cur小,就把stackHelp栈的数据一直往stackData压,知道条件不成立(stackHelp.peek()<cur),前提肯定是stackHelp不为空,然后就把cur压入stackHelp中,模拟下就可以看到一个现象,stackHelp的栈底总是比较大,然后往上面变小,最后stackHelp变成了从栈顶到栈底,数据逐渐变大,最后把stackHelp的数据弹出压入stackData,就行了,就实现了stackData栈从顶到底按从大到小。

【代码】

package pers.keafmd.accumulate.codeinterviewguide

以上是关于用一个栈实现另一个栈的排序的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

算法总结之 用一个栈实现另一个栈的排序

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