Provide a generic Java class named SortedPriorityQueue that implements a priority queue using a sorted list implemented with the Java ArrayList class. Make the implementation as efficient as possible.
Consider the following sorting algorithm that uses the class you wrote just wrote:
void sort(int[] array)
{
SortedPriorityQueue<Integer> queue = new SortedPriorityQueue(); for (int i = 0; i < array.length; i++) queue.add(array[i]);
for (int i = 0; i < array.length; i++) array[i] = queue.remove();
}
Analyze its execution time efficiency in the worst case. In your analysis you may ignore the possibility that the array list may overflow and need to be copied to a larger array. Indicate whether this implementation is more or less efficient than the one that uses the Java priority queue.