014写程序将一个栈按升序排序,对这个栈是如何实现的,你不应该做任何特殊的假设(keep it up)
来源:互联网 发布:极品飞车ol mac 编辑:程序博客网 时间:2024/05/16 13:03
写程序将一个栈按升序排序。对这个栈是如何实现的,你不应该做任何特殊的假设。
程序中能用到的栈操作有:push | pop |isEmpty
最容易想到的就是优先队列来做此题,容易实现。
附加栈来实现:
第二种算法有个极端的测试列子:如果原来栈的数据底部到顶部是从小到大的,例如:
1 2 3 4 5 6 7
那么Tmp每次push一个不同的数就要清空栈中的所有数据,比如某时刻
vStk:1 2 3 4 5
Tmp:6 7
当Tmp要push 5的时候就要清空6 7,然后在push5,这时候vStk栈的数据增加:
vStk: 1 2 3 4 7 6
Tmp: 5
程序中能用到的栈操作有:push | pop |isEmpty
最容易想到的就是优先队列来做此题,容易实现。
另外我们可以再用一个栈来实现栈的升序排列。
优先队列:
//优先队列来实现void sortStack(std::stack<int>& vStk){std::priority_queue<int, std::vector<int>, std::greater<int>> Queue;while (!vStk.empty()){Queue.push(vStk.top());vStk.pop();}while (!Queue.empty()){vStk.push(Queue.top());Queue.pop();}}
附加栈来实现:
//附加一个栈来实现void sortStack_(std::stack<int>& vStk){std::stack<int> Tmp;while (!vStk.empty()){int Top = vStk.top();vStk.pop();while (!Tmp.top() && Top < Tmp.top()){vStk.push(Tmp.top());Tmp.pop();}Tmp.push(Top);}}
第二种算法有个极端的测试列子:如果原来栈的数据底部到顶部是从小到大的,例如:
1 2 3 4 5 6 7
那么Tmp每次push一个不同的数就要清空栈中的所有数据,比如某时刻
vStk:1 2 3 4 5
Tmp:6 7
当Tmp要push 5的时候就要清空6 7,然后在push5,这时候vStk栈的数据增加:
vStk: 1 2 3 4 7 6
Tmp: 5
0 0
- 014写程序将一个栈按升序排序,对这个栈是如何实现的,你不应该做任何特殊的假设(keep it up)
- 010给定一个循环链表,实现一个算法返回这个环的开始结点 (keep it up)
- 013使用两个栈实现一个队列(keep it up)
- (016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)
- cc150:将一个栈按升序排序
- 用一个额外的栈对栈进行升序排序
- 018给定二叉查找树的一个结点, 写一个算法查找它的“下一个”结点“(keep it up)
- 019写程序在一棵二叉树中找到两个结点的最近共同祖先(keep it up)
- 028用两个栈实现队列(keep it up)
- 设想你有一个20GB的文件,每一行一个字符串。请说明将如何对这个文件进行排序。
- 031 二进制中1的个数(keep it up, 看到这个题刚开始有点蒙)
- 009实现一个算法来删除单链表中的一个结点,只给出指向那个结点的指针(keep it up)
- 做IT的你对架构师这个基层技术管理工作了解的有多少
- IT人的职业规划应该如何做?
- 一个.Net程序加壳程序 注意:这个壳对于内行是没有任何作用的,就是一个玩具。
- 现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?
- 这是你应该做的
- 这是你应该做的
- 001_你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?
- Frequent values - POJ 3368 RMQ
- (转)OC学习那些事:Block
- QT Creator使用共享库(一)创建共享库
- C++设计模式之原型模式
- 014写程序将一个栈按升序排序,对这个栈是如何实现的,你不应该做任何特殊的假设(keep it up)
- 【leetcode】Jump Game I, II 跳跃游戏一和二
- NYOJ 295 取余(大数取余)
- 解析html
- #一日一图#谁来暖床!
- 文件的操作(RandomAccessFile类)
- Linux企业级项目实践之网络爬虫(3)——设计自己的网络爬虫
- 个的方法和刚回家看看国际化和刻录机redtfyghj
- Antlr以及Eclipse Refactoring framework