PriorityQueue Implementation

Suppose we want to implement the operations of PriorityQueue using a linked-list or an array-based implementation.

Exercise Provide an example of core operations, for each underlying data structure, where the operation cannot be implemented better that $O(n)$.

Hint: We have, generally, two choices: keeping the underlying data ordered (sorted) or not.

Solution

Keeping the underlying data sorted will enable us to perform remove and best in constant time but insert will be $O(n)$ since an array implementation will require shifting elements around and a linked-list implementation will require a linear search to find where to insert.

Keeping the underlying data unordered (unsorted) will require us to perform linear search for finding/removing the best (whether we use array or a linked list implementation).