顾名思义(?)类似于单调栈?维护一个单调递减的栈。一旦准备入栈的元素大于栈顶元素,栈一直弹出直到准备入栈的元素小于等于栈顶元素,弹出的元素压入另一个tmp栈中。

  1. #include <iostream>
  2. #include <stack>
  3. #include <cstdlib>
  4. #include <ctime>
  5. using namespace std;
  6.  
  7. void StackSort(stack<int>& s)
  8. {
  9. stack<int> tmp;
  10. while(!s.empty()){
  11. tmp.push(s.top());
  12. s.pop();
  13. }
  14. while(!tmp.empty()){
  15. if(s.empty()){s.push(tmp.top());tmp.pop();}
  16. else{
  17. int x=tmp.top();
  18. tmp.pop();
  19. if(x<=s.top()) s.push(x);
  20. else{
  21. while(!s.empty()&&x>s.top()){
  22. tmp.push(s.top());
  23. s.pop();
  24. }
  25. s.push(x);
  26. }
  27. }
  28. }
  29. }
  30.  
  31. void display(stack<int> s)
  32. { while (!s.empty()) cout<<s.top()<<endl,s.pop();
  33. cout<<endl;
  34. }
  35. int main(int argc,char**argv)
  36. { const int n{};
  37. srand((unsigned)time());
  38. stack<int> s;
  39. for (int i{};i<n;i++) s.push(rand()%);
  40. cout<<"Before sorting:"<<endl<<endl; display(s);
  41. cout<<"After sorting:"<<endl; StackSort(s); display(s);
  42. return ;
  43. }

s:

tmp:  8 7 9

s:   9

tmp:  8 7

s:   9 7

tmp: 8

s:  9 8

tmp: 7

s:  9 8 7

tmp:

C++_homework_StackSort的更多相关文章

随机推荐

  1. JSP中如何利用JS实现登录页面的跳转(JSP中如何利用JS实现跳转页面)

    <%!          <%                               url =              word =          }             ...

  2. [Windows Server 2008] IIS自带FTP配置方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS自带FT ...

  3. 排序算法JavaScript版

    冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (va ...

  4. Redis 之服务器集群配置

    常见的集群架构如图: redis操作过程中数据同步的函数调用关系: 集群搭建: 1.修改3个redis.config 文件的: 2.启动2个redis服务器 当杀掉redis主进程Master时,由于 ...

  5. VS2015编译ffmpeg的问题解决

    刚装了vs2015,打开一些ffmpeg项目,发现不能编译通过,包括stdio.h都无法找到,可能是vs2015的bug吧. 现在记录一下解决方法: 我的目录是这样定义的: C:\Program Fi ...

  6. @RequestMapping与controller方法返回值介绍

    @RequestMapping url映射:定义controller方法对应的url,进行处理器映射使用.@RequestMapping(value="/item")或@Reque ...

  7. B.2 列表

    从很多方面来说,列表是最简单也最自然的集合类型.框架中包含很多实现,具有各种功能 和性能特征.一些常用的实现在哪里都可以使用,而一些较有难度的实现则有其专门的使用场景. B.2.1  List< ...

  8. Oracle数据库的自动备份脚本

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  9. DP背包问题小总结

    DP的背包问题可谓是最基础的DP了,分为01背包,完全背包,多重背包 01背包 装与不装是一个问题 01背包基本模型,背包的总体积为v,总共有n件物体,每件物品的体积为v[i],价值为w[i],每件物 ...

  10. cin输入过慢用scanf???现在才知道cin可以加速

    今天才发现可以加速原帖 只需要两行放在main开头即可 ios_base::sync_with_stdio(0); cin.tie(NULL);