我想实现双端优先队列有以下限制:需要实现双端优先级队列的最佳方式是什么?
在一个固定的大小来实现array..say 100个elements..if新元素需要后添加阵列是满的,历史最悠久的需要移除
需要最大和最小在O(1)
如果可能插入在O(1)
如果可能删除最小在O(1)
清楚为O空/初始状态(1)如果在在O时刻在数组元素的数目的可能
计数(1)
我想O(1)所有上述5个操作,但它不可能在所有的O(1)在相同的实现。至少O(1)在3次操作上和O(log(n))在其他2次操作上应该足够了。
如果有任何指针可以提供给这样的实现,将不胜感激。
你有试过什么吗?至少在O(1)中清空/初始化状态对于了解基本数据结构的人来说是微不足道的:( – Fallen
@Fallen ya即使计数太多......只是记住它......我只是在做操作和时间复杂性明确:),所以有人建议一个特定的实现将有清晰的想法的想法 – Medicine
嗯,你不能有插入*和*提取最小/最大值是恒定的或分期不变的时间,因为那意味着一个线性时间排序算法。所有假设您的密钥不是整数或这样,但与比较运算符的黑匣子。 – delnan