外存(External memory)数据结构及算法

有时面试问题会涉及到简单的External Memory Algorithms,以这些为引子,简单记录一下自己感兴趣的相关内容。经验有限,错误及局限之处,见谅。

(待)参考内容

相关问题

数据均位于存储中

Search

在N个object中寻找指定的element。使用B-Tree

External sorting

  • distribution sort, which is similar to quicksort
  • M B \tfrac {M}{B} BM-way merge sort
  • asymptotically optimal runtime of O ( N B log ⁡ M B N B ) O({\tfrac {N}{B}}\log _{\tfrac {M}{B}}{\tfrac {N}{B}}) O(BNlogBMBN) to sort N object

The permutation problem

to rearrange N N N elements into a specific permutation。使用sort,或“inserting each element in order and ignoring the benefit of locality”??

external k-way merge

来自于「k-way merge sort」的基本想法是将内存划分为 k + 1 k+1 k+1份,读取所有 k k k个文件的头部数据,预留一个作为输出缓存。在此基础上执行k-way merge,但附加条件是:每当 k + 1 k+1 k+1中某一部分使用完毕(输出满或输入空),flash并重新载入。

PS:「key-way merge」一个很有意思的方法叫做「Tournament Tree」,使用k个list构建一个「elimination tournament diagram」,使用k个list的头部作为“选手”,输出“胜出”结果,保留“决胜”过程,重复过程。因为可以重复利用“决胜”过程,以及自然构成的平衡树,可以替代堆作为key-merge的方法。(比起堆优化了delete和insert操作)

maximum repetition

给定N个字符串,给出最大重复的串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值