请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。

给定一个int[] numbers(C++中为vector),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。

测试样例:

[1,2,3,4,5]

返回:[5,4,3,2,1]

import java.util.Stack;

import java.util.ArrayList;

public class TwoStacks {

public ArrayList twoStacksSort(int[] numbers) {

// write code here

Stack stack = new Stack();

Stack stack1 = new Stack();

for(int i=0; i

stack.push(numbers[i]);

}

while(!stack.isEmpty()){

int tmp = stack.pop().intValue();

while(!stack1.isEmpty() && stack1.peek() > tmp){

stack.push(stack1.pop());

}

stack1.push(tmp);

}

ArrayList tmp1 = new ArrayList();

while(!stack1.isEmpty()){

tmp1.add(stack1.pop());

}

return tmp1;

}

public Stack twoStacksSort1(Stack s) {

// write code here

Stack stack = new Stack();

while(!s.isEmpty()){

int tmp = s.pop();

while(!stack.isEmpty() && stack.peek() > tmp){

s.push(stack.pop());

}

stack.push(tmp);

}

return stack;

}

public static void main(String[] args) {

TwoStacks ts = new TwoStacks();

int [] numbers = {1,3,2,6,5};

ArrayList al = ts.twoStacksSort(numbers);

for(int i=0; i

System.out.print(al.get(i) + " ");

}

}

}

双栈排序java_双栈排序(Java)相关推荐

  1. 双栈排序java_双栈排序

    23 思路: 1.先看下图 初始栈initStack中存放的数组中待排序的数:临时栈tempStack中存放的是已经排好序的数. 现在继续对初始栈中的数进行排序,5应当插入到临时栈哪个位置? 2. 5 ...

  2. 左神算法:用一个栈实现另一个栈的排序(Java版)

    本题源自左神<程序员面试代码指南>"用一个栈实现另一个栈的排序"题目. 题目 在一个栈中元素的类型为整型,现在想将该栈从栈顶到栈底按从大到小的顺序排序,只许申请一个栈, ...

  3. 【左程云Java算法】Chapter1-5:用一个栈实现另一个栈的排序

    [左程云Java算法]Chapter1-5:用一个栈实现另一个栈的排序 [题目] 用一个栈实现另一个栈的排序 [要求] 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个 ...

  4. java中的列表栈链表_Java数据结构(栈,队列,双链表)

    (1)栈package ChapterOne; public class Stack { //栈数组 long stackArr[]; //栈的大小 int maxSize; //栈的顶部 int t ...

  5. 中缀表达式计算中栈内优先级、栈外优先级的排序原理

    前言: 有关中缀表达式计算是数据结构中非常经典的题目,以至于很多文章或课本喜欢直接给出计算方法一步到位,但关于其中的原理却并未深究,本文试图通过分析运算符的栈内优先级,栈外优先级的排序方法探求中缀表达 ...

  6. linux双网卡 ipv4 ipv6 双栈,linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

    那个啥,不喜欢看一些背景 分析啥的 直接看红字修改就行了. 其他的都是冗余部分,都是码出来的,其他的地方好像搜不到.经验之谈.避免大家采坑. 在国家网信办推行IPv6的大前提下,进行IPv6改造工作, ...

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

    要求: 在一个栈中元素的类型为整型,现在想将该栈从栈顶到栈底按从大到小的顺序排序,只许申请一个栈,除此之外,可以申请其他变量,但是不能申请额外的数据结构 解题思路: 待排序的栈stack, 辅助栈he ...

  8. 栈和队列之用一个栈实现另一个栈的排序

    用一个栈实现另一个栈的排序 题目: 一个栈元素的类型为整数,现在要想将该栈从顶到底按从大到小的顺序排列,只允许申请一个栈,除此之外, 可以申请一个变量,可以申请额外的变量,但是不能申请额外的数据结构, ...

  9. 字符串排序java_开发人员是如何使用Java进行排序?

    在分析大量开源Java项目的源代码时,我发现Java开发人员经常以两种方式进行排序.一种使用的sort()是Collections或的方法,Arrays另一种使用的是排序的数据结构,例如TreeMap ...

最新文章

  1. wxWidgets:wxDialog类用法
  2. aix察看根目录各文件和子目录大小,去除文件系统统计
  3. 11尺寸长宽 iphone_新手必知LED显示屏尺寸规格及计算方法
  4. 【ES6(2015)】Number
  5. (73)FPGA模块调用(VHDL调用system Verilog)
  6. Javascript面向对象二
  7. python画十字_Python解决十字消除棋
  8. 中企动力助天正生物争夺破伤风抗毒素全球话语权
  9. 10个可以让你达到谷歌首页的谷歌SEO技巧
  10. 远程主机和本地文件互传的2种方法
  11. [办公软件word] 怎么让Worde2019显示所有批注?
  12. 【Photoshop技巧】两步将黑色图片改变颜色
  13. ESPG和OGC、SRS、SRID指的是什么
  14. 小米2019秋招软件开发笔试题A选择部分解析
  15. python逻辑回归的主要参数_python机器学习(六)回归算法-逻辑回归
  16. 世界上还有人以“厕所”为姓,都知道是哪国人
  17. 计算机正确的坐姿教案,幼儿园中班教案《正确坐姿真精神》(通用).doc
  18. 子网掩码!如何划分子网掩码,计算IP地址
  19. Hystrix Dashboard
  20. 论坛报名 | Sanjeev Arora,周志华,马毅,张长水……

热门文章

  1. 查询各个分区的数据量_分库、分表、分区的区别,傻傻分不清?
  2. 2021-03-09 Local Lipschitz 可能存在 有限时间逃逸
  3. CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用)
  4. uva232corssword answers模拟
  5. encodeURI、encodeURIComponent、btoa及其应用场景
  6. WinRT知识积累1之读xml数据
  7. js 正则学习小记之左最长规则
  8. Python 基础算法(1) - 算法简介
  9. 10774: matrix
  10. 5- vue django restful framework 打造生鲜超市 -完成商品列表页(上)