Definition of polyphase merge sort, possibly with links to more information and implementations. POLYPHASE MERGE SORTING — AN ADVANCED TECHNIQUE. R. L. Gilstad. Minneapolis-Honeywell Regulator Company. Electronic Data Processing. This article demonstrates one of the best known merge sorts, the polyphase merge. I make no sensational claims regarding the performance of this particular .

Author: Mezizahn Moogulkree
Country: United Arab Emirates
Language: English (Spanish)
Genre: Love
Published (Last): 12 July 2008
Pages: 259
PDF File Size: 13.90 Mb
ePub File Size: 2.28 Mb
ISBN: 900-2-85586-700-1
Downloads: 85517
Price: Free* [*Free Regsitration Required]
Uploader: Samugis

One run is left on each input tape, and merging those runs together will make the sorted file.

Polyphase merge sort

For everything to work out optimally, the last merge phase should have exactly one run on each input polyphase merge sort. The merge iteration reduces run count by a factor of 2, the redistribute iteration doesn’t reduce run count the factor is 1.

When the end of one of the N-1 working files is reached, then it becomes the new output file and what was the output file becomes one of the N-1 working input polyphase merge sort, starting a new iteration of polyphase merge sort.

Simple Algorithm We will assume we have at least three tape drives to perform the sorting. The empty file then becomes the new output file for the next pass. It rewinds the polyphase merge sort file and appends it to the tail end of the list of input files.

The dataset is distributed evenly between two of the working files, either as sorted runs or in the simplest case, single records, sogt can be considered to be sorted runs of size polyphase merge sort.

From Wikipedia, the free encyclopedia.

The sort will proceed normally, but the work file containing the sorted polyphase merge sort will retain its temporary file name. File 1 just emptied and became the new output file. Modifying the sort for use in a multi-threading or multi-tasking environment may also be considered, but is beyond the scope of this polyphase merge sort.


ResetIOMode prepares a work file for input or output. Class MergeList Listings 6 and 7 provides an interface to the template-based container library. I tried to polyphase merge sort each part so that it could stand on its own and have a potential for other uses.


Most discussions of sorting found in programming literature center on internal array sorting. Member polyphase merge sort Get polyphase merge sort Put extract and insert single items of buffered data. For simplicity I’ve not provided code to handle this situation. When or if all the dummy runs are used up in this manner, the distribution phase proceeds to the next level. The current output file will become an input file for the next iteration.

Each merge iteration merges runs from the two input working files, polyphqse the merged output between the two output files, again distributing merye merged runs evenly between the two output files until the final merge iteration.

Polyphase merge sort – Wikipedia

Keeping track of run sizes can get complex, so a simple solution for tapes is to use a single file mark to indicate the end of a run and polyphase merge sort double file mark to indicate the end of data. After another merge, there are 10 runs on T1 and 2 runs on T3. Topological sorting Pre-topological order Pancake sorting Spaghetti sort. A polyphase merge sort merge phase then makes one or more passes across the work files, merging runs to form longer runs on each pass.

Sign up using Facebook. If input is randomly distributed, replacement selection can be polyphase merge sort to polyphase merge sort runs of average length 2m. The 4 tape example shows a balanced 2-way merge sort.

Each polyphase merge sort merges runs from N-1 working files onto a single output working file. The sort arranges the number of runs in each of the work files so that one becomes empty at the completion of each merge pass. The sort uses this class to interface with its temporary work files as well as the permanent source file.

Stepping back to the previous iteration, we were polyphase merge sort from 1 and 2. The algorithm uses the merge routine from merge sort. We read the next record from input tape, if it is larger than the record we have just written; we add it to priority queue.


Listings 2 and 3 present MergeFile, a file buffering class. With 4 files, the first iteration creates runs of size 3 original runs, the second iteration 5 original runs, the third iteration 9 original runs and so on, following the Fibonacci like pattern, 1, 3, 5, 9, 17, 31, 57, Next, the routine detaches the file at list head, its data having been exhausted.

algorithm – Polyphase merge sort – what is the number of phases – Stack Overflow

Suppose we put 21 runs on T2 and 13 runs on T3. Suppose that we have to sort some big set of numbers externally. A number of mini-passes constitute a single merge polyphase merge sort. With system defaults in effect, you’ll end up with only a portion of what you need, leading to memory overwrites. Polyphase merge sort is particularly true during a merge when work files must be rotated at the end of a merge pass.

Figure 1 illustrates the distribution phase schematically. We start new run by building a new priority queue, using all elements in dead space. Retrieved from ” https: Real-world data seldom, if ever, conform to the ideal number of runs polyphase merge sort for a perfect merge.

If all input files contain null runs, the merge ignores them all and produces a single null run on the target file, known as a “dummy merge. I should mention one caveat in this regard. The number of runs decreases by a factor of 2 at each iteration, such as 64, 32, 16, 8, 4, 2, 1. Using the run move count equation for the above examples: By clicking “Post Your Answer”, you acknowledge that you have read our updated terms of polyphase merge sortprivacy policy and cookie policyand that your continued use of the website is subject to these policies.

An example of the run counts and run sizes for 4 files, 31 records can be found in polyphase merge sort 4.