实现一个保持不减少的队列

时间:2014-10-10 09:20:43

标签: algorithm queue

众所周知,标准队列支持两种基本操作:insertpopout。并且insert出现在队列的尾部,而popout出现在队列的头部。在这里,我不知道我是否可以根据这两个操作保持这个队列的顺序,如非减少,或者可能还有一些额外的帮助函数来实现这个目标?

1 个答案:

答案 0 :(得分:0)

您只需稍微更改insert功能即可。每次insert进入队列时,您必须在队列中找到新的元素位置,可以使用以下算法实现:

使用递归函数,每次检查你的新元素是否大于列表中间的元素,如果没有,尝试在队列的左侧插入新元素,否则尝试插入队列的右侧,递归执行,直到找到元素的正确位置。

插入的精简算法是O(lg(n))

对于popout你可以做你现在所做的事情,弹出最后一个元素。