首页 > 试题广场 >

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

[编程题]用一个栈实现另一个栈的排序
  • 热度指数:6323 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?

输入描述:
第一行输入一个N,表示栈中元素的个数
第二行输入N个整数a_i表示栈顶到栈底的各个元素


输出描述:
输出一行表示排序后的栈中栈顶到栈底的各个元素。
示例1

输入

5
5 8 4 3 6

输出

8 6 5 4 3

备注:
1 <= N <= 10000
-1000000 <= a_n <= 1000000
头像 总之就是非常可爱
发表于 2022-02-08 10:44:09
#include<bits/stdc++.h> using namespace std; stack<int> S1,S2; int main(){     int N;     cin>>N;     展开全文
头像 简笔话_Golden
发表于 2020-03-31 23:16:02
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; /** * @描述:用一个栈实现另一个栈的排序 * @思路: 展开全文
头像 uzzzz~
发表于 2022-03-15 20:10:40
思路:类似于插入排序,每次遇到一个更小的就将前面的都弹出将其插入到正确的位置,再将弹出的再压回来。 #include <iostream> #include <stack> using namespace std; int main(){ int n, temp; 展开全文
头像 快支棱起来的椰子很愤怒
发表于 2022-01-10 14:18:58
n = int(input()) stack = list(map(int, input().split())) additional = [] while stack: cur = stack.pop() while additional and cur < addition 展开全文
头像 哈哈~柳暗花明
发表于 2020-08-04 13:44:57
开始想的随便写的,100%,6000+ms m = [] n = [] input() l = list(map(int, input().split())) for i in l: while m: if i >= m[-1]: if not 展开全文
头像 Ulysses.
发表于 2021-09-15 11:57:55
import java.util.Scanner; import java.util.Stack; public class Main { //将栈中的元素排序 public static void sortStackByStatck(Stack<Integer> s 展开全文
头像 牛客722772085号
发表于 2023-10-01 10:50:08
#include <iostream> #include<stack> using namespace std; stack<int> help; stack<int>st; int main() { int n; int m; ci 展开全文
头像 头都大了
发表于 2020-12-08 15:28:08
import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws Exception{ BufferedReader br = new 展开全文