It seems that in a lot of text books top down Merge Sort is done with arrays given its advantage of random access.
I am wondering if there is a way of doing Merge Sort with other data structures? Say the data is stored in a queue or a stack, is it possible to do Merge Sort on the queue/stack with at most another auxiliary queue/stack?
My main concern is that since there is no random access, would merge sort in this case still be able to reach O(n logn) efficiency?