【ADS】External Sorting

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

a k-way merge
number of passes: $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 $F_N$, then the best way to distribute them is to split them into $F_{N–1}$ and $F_{N–2}$ .
For a k-way merge, $F_N^{(k)} = F_{N-1}^{(k)}+F_{N-2}^{(k)}$, where $F_N^{(k)}=0 \; (0 \leq N \leq k-2), F_{k-1}^{(k)}=1$


Exercises

  1. ex1

ex2

hardware

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

  1. ex3

$\lceil 1+log_2(100,000,000 \times 256 \div 128 \div 10^6) \rceil = 9$

  1. ex4

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

  1. ex5



Reference

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