由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 关于Inplace排序栈元素的解法?
相关主题
请问如果要求in place的话,递归是不是就不能用了?A家面试题
Quick sort为什么需要logN的memory?程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]
10分钟前的F家电面面经Leetcode Min Stack问题
有重复元素的全排列,递归算法[合集] 【讨论】两道非常难的Google面试题
李健基础不扎实啊。揭晓名次的方式明明是归并排序,为啥说是冒一个特别的inplace merge two sorted arrays
请教一个排序的问题问一道老题
给定一个值和sorted队列,找到所有pair(其和等于给定值)面试时候C++ pop之前是空 大家怎么处理。。返回什么。。 假设stack 元素都是int形的。
G面试题求解问个经典问题的improvement
相关话题的讨论汇总
话题: 排序话题: 元素话题: 栈顶话题: sort话题: inplace
进入JobHunting版参与讨论
1 (共1页)
j**l
发帖数: 2911
1
要求inplace对栈内的元素重新排序,你可以使用的方法
Push
Pop(不返回值)
Top
IsEmpty
是否应该递归,利用操作系统的隐含堆栈空间,得到一个伪inplace的算法?
假定栈元素是int,代码如下:
void Sort(Stack& s)
{
// 栈为空,无需排序
if (s.IsEmpty())
return;
// 先弹出栈顶元素x,对剩下的栈元素递归排序
int x = s.Top();
s.Pop();
Sort(s);
// 如果排好序的栈为空,把x送回栈即可,排序完成
if (s.IsEmpty())
{
s.Push(x);
return;
}
// 如果x不小于栈顶元素,同样把x送回栈即可,排序完成
int y = s.Top();
if (x >= y)
{
s.Push(x);
return;
}
// 否则, 令x归栈后,栈顶还是最大元素
else
{
s.Pop();
s.Push(x);
s.Push(y);
// 如同冒泡排序一样,最大元素已经调整到栈顶,继续下一趟排序
Sort(s);
}
}
p*****u
发帖数: 310
2
I think switch last two statements will be better.
1 (共1页)
进入JobHunting版参与讨论
相关主题
问个经典问题的improvement李健基础不扎实啊。揭晓名次的方式明明是归并排序,为啥说是冒
有A[i]请教一个排序的问题
问个array in place operation的题目给定一个值和sorted队列,找到所有pair(其和等于给定值)
external sorting的一个问题G面试题求解
请问如果要求in place的话,递归是不是就不能用了?A家面试题
Quick sort为什么需要logN的memory?程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]
10分钟前的F家电面面经Leetcode Min Stack问题
有重复元素的全排列,递归算法[合集] 【讨论】两道非常难的Google面试题
相关话题的讨论汇总
话题: 排序话题: 元素话题: 栈顶话题: sort话题: inplace