Algorithm 红黑树可以用于最佳拟合算法吗?

Algorithm 红黑树可以用于最佳拟合算法吗?,algorithm,tree,allocator,Algorithm,Tree,Allocator,我知道最佳拟合算法必须搜索整个列表,以找到需要O(n)的最佳内存块,因此我考虑使用红黑树将运行时改进为O(logN)。是否有任何情况下,红黑树不适合最佳匹配?如果是,有人能给我举个例子吗?谢谢。一棵红黑相间的树很好用,但这不是一个很好的选择 由于充分利用O(大小)字节需要O(大小)时间,因此最好使用某种手指搜索树,以更快地查找小块为代价,而不必花费更多时间查找大块: 此外,您可能只想为一些最小的可能大小创建单独的免费列表。在搜索和更新搜索树时,可能会遇到多个缓存线。x86上的每个缓存线都是64字

我知道最佳拟合算法必须搜索整个列表,以找到需要O(n)的最佳内存块,因此我考虑使用红黑树将运行时改进为O(logN)。是否有任何情况下,红黑树不适合最佳匹配?如果是,有人能给我举个例子吗?谢谢。

一棵红黑相间的树很好用,但这不是一个很好的选择

由于充分利用O(大小)字节需要O(大小)时间,因此最好使用某种手指搜索树,以更快地查找小块为代价,而不必花费更多时间查找大块:

此外,您可能只想为一些最小的可能大小创建单独的免费列表。在搜索和更新搜索树时,可能会遇到多个缓存线。x86上的每个缓存线都是64字节,因此只有一个缓存线就足以存储8个空闲列表的头指针。如果将8个最小大小的空闲列表的头指针放在一个缓存线中,那么分配这些大小的块会快得多


这还允许您分配比红黑树节点小的块。

如果要构建红黑树来完成所描述的任务,有更好的选择

给定
n
元素,红黑树的构建时间为O(n logn)。这与对数组进行排序和使用二进制搜索是一样的,二进制搜索更简单,性能也更高


显然,如果元素不断添加到数组中,树会更好。

您能详细介绍一下“最佳匹配”吗?我不知道你的意思。举个例子就足够了。假设输入是一个数字列表,另一个数字x=3。如果列表有3,我们输出3,如果没有,我们必须输出大于3的最小数字。例如:输入{4,6,8,3,1,2},x=3=>输出3输入{4,6,8,3,1,2},x=5=>输出6