Problem solved for tournaments with an even number of teams (no byes necessary).  The algorithm now loops over the iteration of matchups, moving the first matchup to the end of the subarray if any of its particpants (names) are already being used in the current round of the tourney.