码迷,mamicode.com
首页 > 编程语言 > 详细

栈排序,只能使用额外的一个栈空间 && 有道一面

时间:2017-10-26 23:05:41      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:栈排序

题目就是栈中存的整数,对其做一个排序。哎当时没写出来。。。。

import java.util.Stack;

public class 栈排序 {
	public static void main(String[] args) {
		Stack<Integer> s = new Stack<Integer>();
		s.push(4);
		s.push(6);
		s.push(1);
		s.push(3);
		s.push(2);
//		while(!s.isEmpty()){
//			System.out.println("排序前");
//			System.out.println(s.pop());
//		}
		s = sort(s);
		while(!s.isEmpty()){
			//System.out.println("排序后");
			System.out.println(s.pop());
		}
	}
	public static Stack<Integer> sort(Stack<Integer> s){
		Stack<Integer> ret = new Stack<Integer>();
		while(!s.isEmpty()){
			int top = s.pop();
			while(!ret.isEmpty() && ret.peek() < top){
				s.push(ret.pop());
			}
			ret.push(top);
		}
		return ret;
	}
}

当辅助栈栈顶小于原栈栈顶时,把辅助栈元素一次弹回原栈直到辅助栈栈顶大于那个栈顶元素。

栈排序,只能使用额外的一个栈空间 && 有道一面

标签:栈排序

原文地址:http://fulin0532.blog.51cto.com/6233825/1976521

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!