【发布时间】:2015-12-08 05:08:54
【问题描述】:
这是我想出的:
procedure sort(Stack S, Queue Q, sortedPosition)
if(sortedPosition==0)
// Sorting completed
return;
max = S.pop
currentPosition = 0;
while (!S.isEmpty()) do:
currentPosition = currentPosition + 1;
if(currentPosition < sortedPosition)
current = S.pop();
if(current > max)
Q.add(max);
max = current;
else
Q.add(current);
end if
end if
end while
S.push(max);
currentPosition--;
while (!Q.isEmpty()) do:
S.push(Q.remove());
end while
sort(S, Q, currentPosition);
end procedure
如果我做错了什么,有人可以看看并告诉我吗?另外,最坏情况下的运行时间必须是 O(n^2)。
【问题讨论】:
-
我认为如果您要问算法问题,那么最好发布更具解释性的伪代码。然后阅读代码并尝试理解算法将很容易理解。
-
谢谢@Haris - 我会尝试编辑它。
-
这是我能做到的最简单的。如果有什么不明白的地方,请告诉我,我会尽力解释。
-
您在方法中定义队列
Q,然后使用递归,这是行不通的 - 每次调用sort都会有不同的Q -
@MateuszDymczyk 谢谢 - 我已经改变了。请立即查看。
标签: algorithm sorting stack queue