与排序的键值对数组相比,平衡搜索树有什么好处?

What benefit does a balanced search tree provide over a sorted key-value pair array?

public class Entry{

int key;
String value;
}

如果你有一个 Entry 数组。

Entry[]

您可以对该数组进行二进制搜索,以在 O(Log(n)) 中查找、插入或删除条目。我也可以在 O(log(n)).

中进行范围搜索

这很简单。

像红黑平衡搜索树这样比较复杂的数据结构,给我一个简单的排序键值数组有什么用?

如果数据不可变,树就没有任何好处。

数组的唯一好处是参考位置,例如数据靠得很近,CPU 可以缓存它。

因为数组是排序的,查找是O(log n)

如果您添加/删除项目,事情就会发生变化。

对于少量元素,数组更好(更快),这是因为引用的局部性。

对于更多的项目,红黑树(或其他自平衡树)会表现更好,因为数组需要移动元素。
例如插入和删除将花费 O(log n) + huge n/2 进行转换。