【发布时间】:2021-10-29 16:55:10
【问题描述】:
请解释如何进行 114 次比较。以下是从我的书中截取的屏幕截图(第 350 页,Data Structures Using C,第 2 版。Reema Thareja,牛津大学出版社)。我的理由是,在最坏的情况下,每个节点只有最少数量的子节点(即 5 个),所以我以 5 为基数取一百万的对数,结果为 9。因此,假设在树的每个级别,我们搜索最小数量的键(即 4 个),大约有 36 个比较,远不及 114。
考虑一种情况,在这种情况下,我们必须搜索未编入索引且 包含 n 个键值的未排序数据库。最坏情况运行 执行此操作的时间将是 O(n)。相反,如果数据 在数据库中用B树索引,同样的查找操作 将在 O(log n) 中运行。例如,在集合上搜索单个键 一百万个密钥最多需要 1,000,000 次比较。但如果 相同的数据用 10 阶的 B 树索引,然后只有 114 在最坏的情况下需要进行比较。
Page 350, Data Structures Using C, 2nd Ed. Reema Thareja, Oxford Univ. Press
【问题讨论】:
-
我很快就会想出一个解决方案,但对于初学者来说,请尝试使用可视化工具来了解它是如何针对较少数量的键工作的。一旦你理解了它通常是小菜一碟。
-
感谢Aritro,虽然我已经真诚地完成了所有与它相关的理论,例如每个节点中的最小键数,B树的属性等,但实际上我无法掌握它。期待你的答案。
-
我假设键也有与之相关的值?
标签: database indexing data-structures tree b-tree