for i = 1..n {
read first page of run[i] into a buffer[i]
set current tuple cur[i] to first tuple in buffer[i]
}
while (more than 1 run still has tuples) {
s = find buffer with smallest tuple as cur[i]
copy tuple cur[i] to output buffer
if (output buffer full) { write it and clear it}
advance cur[i] to next tuple
if (no more tuples in buffer[i]) {
if (no more pages in run[i])
mark run[i] as complete
else {
read next page of run[i] into buffer[i]
set cur[i] to first tuple in buffer[i]
} } }
copy tuples in non-empty buffer to output
|