else ta[ : [ ]inc(kend endif then inc( [ - ]else merge one real run from [ [ - to [ - enddec(zuntil runs set( [ [ - ]] [ [ - ]])rotate sequences in map tcompute [ifor next leveldec(leveluntil level (*sorted output is [ [ ]]*the actual merge operation is almost identical with that of the -way merge sortthe only difference being that the sequence elimination algorithm is somewhat simpler the rotation of the sequence index map and the corresponding counts di (and the down-level recomputation of the coefficients aiis straightforward and can be inspected in the following program that represents the polyphase algorithm in its entirety procedure polyphase (srcfiles file)files filevar ijmxtnintegerkdnzlevelintegerxminintegeradarray of integerttaarray of integer(*index maps*rruns rider(*source*farray of files filerarray of runs riderprocedure selectvar izintegerbegin if [jd[ + then inc(jelse if [ then inc(level) : [ ]for : to - do [ : [ + [ ] [ : [ + end endj : enddec( [ ]end selectprocedure copyrun(*from src to [ ]*begin (adens _mergesorts *