【发布时间】:2018-06-12 00:51:52
【问题描述】:
在CLRS(Introduction to algorithm)一书中,第18章介绍了B-Tree。它具有以下性质(P488)
x.n 键本身,x.key1, ..., x.keyx.n 以非递减顺序存储
但是在 B-Tree 中搜索元素的过程中,将元素插入到 B-Tree 中,CLRS 使用线性搜索而不是二分搜索来搜索特定节点中的键。
为什么要这样做?用二分查找会不会有更好的表现?
【问题讨论】:
-
我不知道来源,但我猜你从根到树叶“线性”搜索,根据节点的值向左或向右分支。实际上,考虑到树的结构,这当然是二分查找。
-
我编辑了这篇文章。 “线性”是指在特定节点中搜索。您可以参考 CLRS 伪代码以获得更好的理解。
-
嗯,没有源码我是无法参考伪代码的。但我了解您的意思不是搜索节点,而是搜索节点 within 的键。据我了解,每个节点都有固定(少量)的值,因此在此处使用二分搜索可能有点矫枉过正,或者作者遗漏了实现细节。
-
他们可能只是想保持简单。如果扇出足够大,实际实现在节点中使用二进制搜索。
标签: algorithm