External sorting

number of passes: 1 + ⌈ l o g 2 ( N / M ) ⌉ 1+ \lceil log_2 (N/M) \rceil 1+log2(N/M)
seek time: O(number of passes)

a k-way merge
number of passes: 1 + ⌈ l o g k ( N / M ) ⌉ 1+ \lceil log_k (N/M) \rceil 1+logk(N/M)
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 F_N FN, then the best way to distribute them is to split them into F N – 1 F_{N–1} FN1 and F N – 2 F_{N–2} FN2 .
For a k-way merge, F N ( k ) = F N − 1 ( k ) + F N − 2 ( k ) F_N^{(k)} = F_{N-1}^{(k)}+F_{N-2}^{(k)} FN(k)=FN1(k)+FN2(k), where F N ( k ) = 0    ( 0 ≤ N ≤ k − 2 ) , F k − 1 ( k ) = 1 F_N^{(k)}=0 \; (0 \leq N \leq k-2), F_{k-1}^{(k)}=1 FN(k)=0(0Nk2),Fk1(k)=1

Exercises

在这里插入图片描述

在这里插入图片描述
hardware
外部排序主要开销在I/O上

在这里插入图片描述
⌈ 1 + l o g 2 ( 100 , 000 , 000 × 256 ÷ 128 ÷ 1 0 6 ) ⌉ = 9 \lceil 1+log_2(100,000,000 \times 256 \div 128 \div 10^6) \rceil = 9 1+log2(100,000,000×256÷128÷106)=9

在这里插入图片描述
Huffman tree,每次挑最短的两条链合并

在这里插入图片描述


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值