MergeSort has two parts, "divide" and "merge" (arguably three if you include "recurse" as its own part in the middle). I'm interested in the "merge" part, which tends to look like this:
consider two priority queues list1, list2 initialize an empty sorted list while neither list1 nor list2 is empty: find lowest element between peek(list1) and peek(list2) pop that element from its list and add it to the sorted list add the rest of the non-empty list to the sorted list return the sorted list
This paradigm of "split into multiple priority queues and continuously handle the first elements" is also useful for problems that decidedly do not involve merging, such as performing operations on one list depending on the highest-priority element of another list that's less than it. For example,
consider two priority queues list1, list2 initialize an empty destination list while neither list1 nor list2 is empty: while peek(list1) < peek(list2): add f(peek(list1), peek(list2)) to destination list pop element from list1 pop element from list2 return destination list
In both of these examples, the same idea of "iterate through multiple priority queues simultaneously, doing something with the top elements of each, but only pop one of them at a time" is used. This is different than matching two lists and enumerating through corresponding elements.
Is there a specific name for this technique/paradigm? The Wikipedia page for MergeSort does not, at time of writing, answer the question, and in the context of MergeSort I've never seen it described as anything other than "merge" (which is inaccurate in my second example) or "conquer" (which is too vague).