zoukankan      html  css  js  c++  java
  • C++_homework_StackSort

    顾名思义(?)类似于单调栈?维护一个单调递减的栈。一旦准备入栈的元素大于栈顶元素,栈一直弹出直到准备入栈的元素小于等于栈顶元素,弹出的元素压入另一个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{20};
    37   srand((unsigned)time(0));
    38   stack<int> s;
    39   for (int i{0};i<n;i++) s.push(rand()%100);
    40   cout<<"Before sorting:"<<endl<<endl;  display(s);
    41   cout<<"After sorting:"<<endl; StackSort(s); display(s);
    42   return 0;
    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:  

  • 相关阅读:
    Universal USB Installer集开源软件之佳作
    利用sdkman安装kotlin和java环境
    centos 7 安装docker
    CentOS 7 安装中文环境
    Using ADB and fastboot
    LinearGradient线型渐变效果
    将头图片变成圆形简单实现
    望远镜效果
    BitmapShader填充图形
    给图片加阴影效果简单示例代码实现
  • 原文地址:https://www.cnblogs.com/Jiiiin/p/8668704.html
Copyright © 2011-2022 走看看