Algorithm 二进制搜索基本算法的总时间复杂度

Algorithm 二进制搜索基本算法的总时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,这似乎是一个关于算法的基本问题,但我试图向自己确认我是正确的(仍然试图在自学算法时掌握基本概念) 我遇到的一个问题需要首先运行一个O(N)算法 然后在N元素数组上执行N个二进制搜索 然后运行另一个O(N)算法 我试图找出这个问题的总时间复杂度 它是O(N)吗,因为这是O(logN)的主序 提前感谢一个O(N)步骤确实会主导一个O(logn)步骤。但是你的第二步并不需要O(logn)时间。每个二进制搜索需要O(logn)时间,您执行二进制搜索N次。所以第二步,也就是整个算法,需要O(N log

这似乎是一个关于算法的基本问题,但我试图向自己确认我是正确的(仍然试图在自学算法时掌握基本概念)

  • 我遇到的一个问题需要首先运行一个O(N)算法
  • 然后在N元素数组上执行N个二进制搜索
  • 然后运行另一个O(N)算法
我试图找出这个问题的总时间复杂度

它是O(N)吗,因为这是O(logN)的主序


提前感谢

一个O(N)步骤确实会主导一个O(logn)步骤。但是你的第二步并不需要O(logn)时间。每个二进制搜索需要O(logn)时间,您执行二进制搜索N次。所以第二步,也就是整个算法,需要O(N logn)时间。

一个O(N)步确实会支配一个O(logn)步。但是你的第二步并不需要O(logn)时间。每个二进制搜索需要O(logn)时间,您执行二进制搜索N次。所以第二步,以及整个算法,需要O(N logn)时间。

我原本以为你总结了时间的复杂性。所以它是O(n)+O(logn)+O(n),即O(2n)+O(logn),以O(2n)为主导序。为什么这种想法是错误的?谢谢@WycG该规则是正确的,您的第二个术语是错误的:它不是O(logn),而是O(nlogn),原因如上所述。n*O(对数n)=O(对数n)+O(对数n)+…+O(logn)=O(n logn)的原因与O(n)+O(n)=O(2n)的原因相同,但是忽略了因子2,而因子n不是。我原本以为你总结了时间复杂性。所以它是O(n)+O(logn)+O(n),即O(2n)+O(logn),以O(2n)为主导序。为什么这种想法是错误的?谢谢@WycG该规则是正确的,您的第二个术语是错误的:它不是O(logn),而是O(nlogn),原因如上所述。n*O(对数n)=O(对数n)+O(对数n)+…+O(logn)=O(n logn),原因与O(n)+O(n)=O(2n)相同,但忽略因子2,而忽略因子n。