众所周知,标准队列支持两种基本操作:insert
和popout
。并且insert
出现在队列的尾部,而popout
出现在队列的头部。在这里,我不知道我是否可以根据这两个操作保持这个队列的顺序,如非减少,或者可能还有一些额外的帮助函数来实现这个目标?
答案 0 :(得分:0)
您只需稍微更改insert
功能即可。每次insert
进入队列时,您必须在队列中找到新的元素位置,可以使用以下算法实现:
使用递归函数,每次检查你的新元素是否大于列表中间的元素,如果没有,尝试在队列的左侧插入新元素,否则尝试插入队列的右侧,递归执行,直到找到元素的正确位置。
插入的精简算法是O(lg(n))
。
对于popout
你可以做你现在所做的事情,弹出最后一个元素。