结合二进制搜索和线性搜索或任何其他算法
Combining binary search and linear search or any other algorithm
我想问一下,我还在学习时间复杂度。
我遇到了一道题,题目要求我计算二分查找的时间复杂度,
二分查找的时间复杂度为O(log m)。
搜索后,他们要我在其中计算一个线性O(n) 搜索。
所以在二分查找里面,有一个线性查找。
是 O(n log m) 还是 O(log m*n)?
如果你可以补充,请告诉我如果有多个算法组合,复杂度如何计算。谢谢!
我不确定我是否完全理解你,但我会尽力而为:
我认为有 2 种可能的情况与您的问题相关:
循环中有循环,一个不影响另一个。在那种情况下,您总是将一个的时间复杂度乘以另一个的时间复杂度。例如,在您的情况下,如果您在外部循环中进行二进制搜索并在内部进行线性搜索,则应在 O(n*logn)
中完成。该规则也与彼此内部的 3 个循环相关,等等。只需将一个乘以另一个即可。
一些嵌套循环会影响其他一些(即外循环的不同迭代会导致内循环的时间复杂度发生变化)。在这种情况下,计算嵌套循环的整体复杂度变得更加复杂,上述方法将不起作用。
无论如何,在你的情况下,我看不出有任何方法可以得到 O(log m*n)
。
另外,我不太明白你为什么要在n
和m
之间切换。通常,如果您谈论具有相同数量项目的相同数据结构,那么您会使用 n
.
时间复杂度为 O(n log m)。
为了计算复杂度找到原始步骤然后计算递归关系。你会得到答案。
有关详细信息,您可以转到 https://iq.opengenus.org/binary-search-in-linked-list/
我想问一下,我还在学习时间复杂度。 我遇到了一道题,题目要求我计算二分查找的时间复杂度,
二分查找的时间复杂度为O(log m)。
搜索后,他们要我在其中计算一个线性O(n) 搜索。 所以在二分查找里面,有一个线性查找。
是 O(n log m) 还是 O(log m*n)?
如果你可以补充,请告诉我如果有多个算法组合,复杂度如何计算。谢谢!
我不确定我是否完全理解你,但我会尽力而为:
我认为有 2 种可能的情况与您的问题相关:
循环中有循环,一个不影响另一个。在那种情况下,您总是将一个的时间复杂度乘以另一个的时间复杂度。例如,在您的情况下,如果您在外部循环中进行二进制搜索并在内部进行线性搜索,则应在
O(n*logn)
中完成。该规则也与彼此内部的 3 个循环相关,等等。只需将一个乘以另一个即可。一些嵌套循环会影响其他一些(即外循环的不同迭代会导致内循环的时间复杂度发生变化)。在这种情况下,计算嵌套循环的整体复杂度变得更加复杂,上述方法将不起作用。
无论如何,在你的情况下,我看不出有任何方法可以得到 O(log m*n)
。
另外,我不太明白你为什么要在n
和m
之间切换。通常,如果您谈论具有相同数量项目的相同数据结构,那么您会使用 n
.
时间复杂度为 O(n log m)。
为了计算复杂度找到原始步骤然后计算递归关系。你会得到答案。
有关详细信息,您可以转到 https://iq.opengenus.org/binary-search-in-linked-list/