算法训练2.2:栈和排序

简介: 分析:这道题简单,用到栈,原理就是栈顶元素与后面的元素进行比较,如果比后面的数都大,则弹出这个元素,否则进栈下一个元素,没了,就这么简单

6210569c5cb0b1f389fc08562cdf642.png


源码:

include <bits/stdc++.h>

using namespace std;

int b=0;

int main(void)

{

stack<int>stk;
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
stk.push(arr[0]); 
for(int i=0;i<n-1;i++)
{
int a=0;
for(int j=i+1;j<n;j++)
    {
if(stk.top()>arr[j])
        {
            a++;
        }
    }
if(a==(n-1-i))
    {
int c=stk.top();
        stk.pop();
        b++;
cout<< c <<" ";
        stk.push(arr[i+1]);
    }else
    {
        stk.push(arr[i+1]);
    }
}
b=stk.size();  //注意这个,我第一次没设置的时候,一直输出不对,发现,stk.size()会变化,是一个变化的值,所以下面的循环只能用当前的长度值;
for(int i=0;i<b;i++)
{
int c=stk.top();
    stk.pop();
cout<<c<<" ";
}
return 0;

}

最后,很简单这道题!

目录
相关文章
|
1天前
|
算法 Java 调度
Java数据结构与算法:拓扑排序
Java数据结构与算法:拓扑排序
|
1天前
|
算法 搜索推荐 C++
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
10 0
|
2天前
|
算法 C语言
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
|
2天前
|
算法 C语言
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
|
2天前
|
存储 算法 编译器
【数据结构与算法】使用数组实现栈:原理、步骤与应用
【数据结构与算法】使用数组实现栈:原理、步骤与应用
|
2天前
|
算法
【数据结构和算法】---栈和队列的互相实现
【数据结构和算法】---栈和队列的互相实现
5 0
|
2天前
|
缓存 算法
【数据结构和算法】--- 栈
【数据结构和算法】--- 栈
4 0
|
3天前
|
算法
【C/数据结构和算法】:栈和队列
【C/数据结构和算法】:栈和队列
12 1
|
6天前
|
人工智能 算法 搜索推荐
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
7天前
|
算法 Java 编译器
Java数据结构与算法:线性数据结构之栈
Java数据结构与算法:线性数据结构之栈