算法总结之 用一个栈实现另一个栈的排序
2017-09-12 19:51
127 查看
用一个栈实现另一个栈的排序
一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序。只允许申请一个栈。除此之外可以申请新的变量,但不能申请额外数据结构
思路: 将要排序的栈记为 stack, 申请的数组栈记为help。
stack上执行pop操作, 弹出的元素记为cur
如果cur <= help.peek() 则将cur直接压入help
如果 cur>help.peek() 将help元素逐一弹出,最后将help中的所有元素弹出逐一压入stack 直到cur小于 help.peek()
一直执行这样的操作,直到stack中的全部元素压入到help。 最后将help中的所有元素注意压入stack
package TT; import java.util.Stack; public class Test123 { public static void sortStackBystack(Stack<Integer> stack){ Stack<Integer> help = new Stack<Integer>(); while(!stack.isEmpty()){ int cur = stack.pop(); while(!help.isEmpty() && help.peek()<cur){ stack.push(help.pop()); } help.push(cur); } while(!help.isEmpty()){ stack.push(help.pop()); } } }
相关文章推荐
- 用一个栈实现另一个栈的排序(每日一道算法题)
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 用一个栈实现另一个栈的排序
- [学习总结][算法]用插入排序对一个链表进行排序
- 每天一个数据结构——三种简单排序算法及Java实现
- 数据结构5 用一个栈实现另一个栈的排序
- C++ 使用一个栈实现另一个栈的排序
- 用一个栈来实现另一个栈的排序
- 左神的书——《程序员代码面试指南》之用一个栈实现另一个栈的排序c++实现
- 栈和队列---用一个栈实现另一个栈的排序
- 用一个栈实现另一个栈的排序(java实现)
- C#中定义数组和一个简单排序算法实现。
- 栈和队列(5)——用一个栈实现对另一个栈的排序
- 实现一个简单的c++ list容器(含sort排序 链表归并算法实现)
- 经典内部排序算法学习总结(算法思想、可视化、Java代码实现、改进、复杂度分析、稳定性分析)
- 1栈和队列--用一个栈实现另一个栈的排序
- 排序基础算法总结与c++实现
- 1_5用一个栈实现另一个栈的排序
- 曾经遇到的一个面试题,快速排序用链表实现,算法和以前的相似,需要注意一些细节处理
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)