In the merging strategy to be used by our sorting algorithms, the first step
is for each processor to sort its own sublist using some fast algorithm.
We take for this a combined quicksort/insertion sort which is described
in detail as Algorithm Q by Knuth ([Knuth:73a, pp. 118-9]).
Once the local (processor) sort is complete, it must be decided how to
merge all of the sorted lists in order to form one globally sorted
list. This is done in a series of compare-exchange steps. In each
step, two neighboring processors exchange items so that each processor
ends up with a sorted list and all of the items in one processor are
greater than all of the items in the other. Thus, two sorted lists of
m items each are merged into a sorted list of 2m items
(stored collectively in the memory of the two processors). The
compare-exchange algorithm is interesting in its own right, but we do
not have the space here to discuss it. The reader is referred to
Chapter 18 of [Fox:88a] for the details.