【发布时间】:2021-09-03 15:41:58
【问题描述】:
我正在观看有关算法的大学讲座,似乎其中有很多几乎完全依赖某种特定类型的二叉搜索树来完成查询/数据库/搜索任务。
我不理解这种对二分搜索树的痴迷。似乎在广大的大多数场景中,如果是静态数据,BSP 可以替换为排序数组,或者如果插入动态发生,则可以替换为排序桶列表,然后是 可以对它们使用二分搜索。
使用这种方法,您可以获得与 BST 相同的算法复杂度(至少用于查询),方式更好的缓存一致性,更少的内存碎片(以及更少的 gc 分配,具体取决于您使用的语言) re in),并且可能更容易编写。
根本问题是 BSP 完全是内存幼稚的——他们完全关注 O(n) 复杂性,他们忽略了内存碎片和缓存一致性的非常真实的性能考虑......我我错过了什么?
【问题讨论】:
标签: performance memory-management binary-search-tree binary-search