number of passes: 1+log2(N/M)1+ \lceil log_2 (N/M) \rceil
seek time: O(number of passes)

a k-way merge
number of passes: 1+logk(N/M)1+ \lceil log_k (N/M) \rceil
require 2k tapes

polyphase merge
require k+1 tapes

Huffman tree
Total merge time = O ( the weighted external path length )

If the number of runs is a Fibonacci number FNF_N, then the best way to distribute them is to split them into FN1F_{N–1} and FN2F_{N–2} .
For a k-way merge, FN(k)=FN1(k)+FN2(k)F_N^{(k)} = F_{N-1}^{(k)}+F_{N-2}^{(k)}, where FN(k)=0  (0Nk2),Fk1(k)=1F_N^{(k)}=0 \; (0 \leq N \leq k-2), F_{k-1}^{(k)}=1

Exercises

External sorting

External sorting
hardware
外部排序主要开销在I/O上

External sorting
1+log2(100,000,000×256÷128÷106)=9\lceil 1+log_2(100,000,000 \times 256 \div 128 \div 10^6) \rceil = 9

External sorting
Huffman tree,每次挑最短的两条链合并

External sorting


https://blog.csdn.net/ailunlee/article/details/84548950

相关文章: