3.9.4 Merging Sequences of Entries

Now that the perfect shuffle has been developed, let's return to the merging of two sequences. Set the first n entries of configuration to one of the sequences to be merged, and the second n entries of configuration to the other, but enter the second in reverse order.

Consider the following algorithm for merging two sequences of ordered (largest to smallest) entries, each of length n:

Apply perfectshuffle and compareexchange to configuration a total of 2n times.

Compareexchange is a function that compares each of the n pairs of adjacent configuration entries and exchanges their values whenever the second is larger than the first. Table 3.3 shows the results obtained as this algorithm is applied to our sample sequences of length 4. Since lg 2n = lg 8 = 3, the algorithm terminates after the third perfect shuffle and compare-and-exchange operation. Notice that this results in configuration containing the correct merged sequence.

When 2n is a power of 2, say 2k, then the k iterations always produce the correct merge. This is certainly not obvious, and it is not proven here, but one point is important. If this merge is implemented as a for loop and carried out conventionally (that is, sequentially), it will take time O(n lg n). The straightforward sequential merge discussed earlier takes only O(n) time. However, if the n moves of perfectshuffle and the n pair comparisons and interchanges of compareexchange are all done in parallel (at the same time), then the total time will be just O(lg n).

Table 3.3 The Result of Merging Two Sequences of Ordered Entries of Length 4

    Initial       After First      After First      After Second

 Configuration  Perfect Shuffle  Compare Exchange  Perfect Shulle

-----------------------------------------------------------------

      100               100              100             100

       80                10               10              85

       65                80               80              10

       30                50               50              65

       10                65               85              80

       50                85               65              90

       85                30               90              50

       90                90               30              30

  After Second      After Third      After Third

Compare Exchange  Perfect Shuffle  Compare Exchange

---------------------------------------------------

      100               100              100

       85                90               90

       65                85               85

       10                80               80

       90                65               65

       80                50               50

       50                10               30

       30                30               10

Parallel processing is beyond the scope of this text, but this application illustrates its power and some of the difficulties involved. Doing parallel processing correctly is tricky, since care must be taken to do the right thing at the right time. For instance, one could dress in parallel fashion, but certain constraints must be observed. Socks and shirt can be put on at the same time (a valet is needed of course, since a person has only two hands) followed by pants, with shoes and jacket next and in parallel. But shoes cannot go on before socks.

The perfect shuffle (and the topic of parallel processing) is pursued further in Stone [1971, 1980] and Ben-Ari [1982]. An application of these ideas to the stable marriage problem appears in Hull [1984].