写程序将一个栈按升序排序
1.介绍
写程序将一个栈按升序排序
代码其实很简单,奈何网络上太多垃圾代码,本来打算参考下别人的思想的,结果发现都看着不对劲,反正大家想学习的话可以关注我博客,我的都是自己验证过的,有问题可以评论,我会立马修改的。
本方法是在插入后调用的
2.解决思想
2.1如果栈顶元素小于其后面的元素,先把后面的元素放入缓存栈中,然后再把元素放入缓存栈,这样就可以保证,缓存栈中的数据是降序的
2.2多次遍历,保证所有数据都降序放到缓存栈中
2.3遍历缓存栈,把数据放回原来的栈中
3.代码
static void sortStack(Stack<Integer> stack) { Stack<Integer> temp = new Stack<Integer>(); while (!stack.empty()) { int val = stack.pop(); while (!stack.empty() && val < stack.peek()) { temp.push(stack.pop()); } temp.push(val); } while (!temp.empty()){ stack.push(temp.pop()); } }
代码测试块:
public static void main(String args[]){ Stack<Integer> stack = new Stack<Integer>(); stack.push(1); stack.push(3); stack.push(2); sortStack(stack); System.out.println(""); }
------------------------------------------------------------------------------------------------------------------------------------------------- 觉得我的博客有用的,请顶下我的文章并关注我,让更多的人能看到我写的博客,谢谢。-------------------------------------------------------------------------------------------------------------------------------------------------
网上的答案很多,但是怎么说呢,太多都是那种复制粘贴的答案,有些都是运行不了的。我写博客的原因主要是为了分享我的学习过程,帮助大家,同时也让其他人检查我的答案。太过简单的博客我就不写了,浪费彼此时间。
首先我保证,我的代码都是自己运行过的,如果是同样的java1.7是不会有问题。
其次,我的代码都是写清楚了解决思想的,便于大家理解。
我写代码主要是看中可读性,太过复杂的代码,在我看来是很扯淡的。代码的可读性很重要,尤其是在项目中,一个项目的代码如果需要他人阅读半天才能理解,那么这个项目会越来越难处理。