我正在观看关于算法的大学讲座,似乎其中许多课程几乎完全依赖某种特定类型的二叉搜索树来进行查询/数据库/搜索任务。
我不明白这种对Binary Search Trees 的痴迷。似乎在绝大多数情况下,在静态数据的情况下,BSP 可以用排序数组替换,如果插入动态发生,则可以用排序的桶列表替换,然后可以对它们进行二分搜索。
通过这种方法,你会得到相同的算法复杂性(至少查询)为BST,方式更好的高速缓存一致性,这样少的内存碎片(取决于你是用什么语言少GC allocs),并有可能要简单得多写。
基本问题是 BSP 完全没有内存——他们的重点完全是 O(n) 复杂性,他们忽略了内存碎片和缓存一致性的非常真实的性能考虑......我错过了什么吗?
performance memory-management binary-search binary-search-tree
我不小心写了
if (myEnum1 < myEnum2)
{
//do etc.
}
Run Code Online (Sandbox Code Playgroud)
并且我没有遇到编译器错误。我是否应该首先将这些枚举转换为它们的基础类型:
if ((int) myEnum1 < (int) myEnum2))
{
//do etc.
}
Run Code Online (Sandbox Code Playgroud)
这两个片段等效吗?我的 IDE Jetbrains Rider 似乎并不这么认为。我无法跳转到<定义,所以我假设它是一个编译器?