cc150:将一个栈按升序排序
来源:互联网 发布:中小企业网络架构 编辑:程序博客网 时间:2024/05/29 03:23
一、使用一个附加的栈来模拟插入排序。将原栈中的数据依次出栈与附加栈中的栈顶元素比较, 如果附加栈为空,则直接将数据压栈。否则, 如果附加栈的栈顶元素大于从原栈中弹出的元素,则将附加栈的栈顶元素压入原栈。 一直这样查找直到附加栈为空或栈顶元素已经不大于该元素, 则将该元素压入附加栈。
stack<int> Ssort(stack<int> s){stack<int> t;while(!s.empty()){int data = s.top();s.pop();while(!t.empty()&&t.top()>data){s.push(t.top());t.pop(); }t.push(data);}return t;}
二、使用一个优先队列来为出栈的元素排序,原栈中的元素不断出栈然后插入优先队列, 直到原栈为空。然后再将优先队列中的元素不断压回原栈,这样操作后, 栈中的元素便有序化了。
void Qsort(stack<int> &s) {priority_queue< int,vector<int>,greater<int> > q;while(!s.empty()){q.push(s.top());s.pop();}while(!q.empty()){s.push(q.top());q.pop();}}
主程序测试时可以随机产生一系列数入栈,调用程序。。
0 0
- cc150:将一个栈按升序排序
- CC150:将一个矩阵旋转90度
- 014写程序将一个栈按升序排序,对这个栈是如何实现的,你不应该做任何特殊的假设(keep it up)
- 【Java】按升序对栈进行排序
- 按升序对栈进行排序
- 按升序对栈进行排序
- 用一个额外的栈对栈进行升序排序
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- cc150:从一个未排序的链表中移除重复项
- 将一个字符串按照升序输出
- 【数据结构】将一组数据升序排序(利用堆排序)
- 第14 题:题目:输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 14、输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字(14)
- 算法习题14:输入一个已经按升序排序过的数组和一个数字
- 魔力日志网 http://www.mlrzw.cn
- webview学习记录
- Linux服务器开发原则总结
- XML文档解析DOM、SAX、JDOM、DOM4j、XPath
- akoj-1253-第一个只出现一次的字符
- cc150:将一个栈按升序排序
- TCP/IP协议族:RFC
- 单火线取电
- 新人报到
- 虚拟内存与虚拟地址空间
- 前端单选框实现父/子级包函选项功能
- poj 2155 Matrix
- netty5.0之server端NioServerSocketChannel的bind分析
- 【java】getAbsolutePath()方法详解