Let us analyze the worst-case time complexity of each set of operations on a sorted doubly linked list of size up to N:
Θ(N)delete operations:
Given a pointer to the record to be deleted in a doubly linked list, deletion takes O(1) time per operation.
Θ(N)×O(1)=O(N) O(logN)insert operations:
In a sorted linked list, finding the correct position takes O(N) time in the worst case, and updating pointers takes O(1).
O(logN)×O(N)=O(NlogN) O(logN)find operations:
Searching in a linked list takes O(N) time per operation.
O(logN)×O(N)=O(NlogN) Θ(N)decrease-key operations:
Given a pointer to the node whose key decreases, the node must be shifted towards the head of the sorted list to restore sorted order, which takes O(N) time per operation in the worst case.
Θ(N)×O(N)=O(N2)
Total time complexity for all operations together is:
O(N)+O(NlogN)+O(NlogN)+O(N2)=O(N2) Hence, the correct option is (C).