Time complexity 为什么不能在O(1)时间内搜索/插入/删除?

Time complexity 为什么不能在O(1)时间内搜索/插入/删除?,time-complexity,big-o,Time Complexity,Big O,为什么没有数据结构可以在O(1)时间内支持搜索/插入/删除?如果哈希函数设计正确,哈希表平均在O(1)时间内运行。但当然,在最坏的情况下,哈希表是O(n),例如,如果哈希函数为所有元素返回相同的值。您的问题是有缺陷的-您可以拥有在O(1)时间搜索、插入或删除的数据结构。例如,链表允许在O(1)时间内插入和删除,因为您只需要更改两个指针。数组允许您在O(1)时间内按数组索引进行搜索。不,为什么没有像BST O(logn)、B-树或Fibonacci堆这样的数据结构,可以支持所有搜索/插入/删除函数

为什么没有数据结构可以在O(1)时间内支持搜索/插入/删除?

如果哈希函数设计正确,哈希表平均在O(1)时间内运行。但当然,在最坏的情况下,哈希表是O(n),例如,如果哈希函数为所有元素返回相同的值。

您的问题是有缺陷的-您可以拥有在O(1)时间搜索、插入或删除的数据结构。例如,链表允许在O(1)时间内插入和删除,因为您只需要更改两个指针。数组允许您在O(1)时间内按数组索引进行搜索。不,为什么没有像BST O(logn)、B-树或Fibonacci堆这样的数据结构,可以支持所有搜索/插入/删除函数的O(1)时间?@Naomi如果您要问数学证明,您必须问一个非常精确的问题。你想知道为什么树不能在O(1)中运行吗?您是否有一个算法要计算复杂性?另外,在O(1)中创建插入/删除的数据结构实际上非常简单。问题是内存复杂度可能会快速增加。@如果数据结构能够支持>或<比较,为什么不能是O(1)次?请详细说明一下?为了数学证明,我们通常假设哈希函数是一致的,输入是随机的。此外,随机选择散列函数(通用散列)也是很常见的,这样可以防止坏数据(类似于随机快速排序)。在这种情况下,渐近复杂性实际上是0(1)。