请问这台能升级显卡么?# Hardware - 计算机硬件
j*l
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);
}
}
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);
}
}