Time complexity 交叉口的时间复杂度(最坏情况)

Time complexity 交叉口的时间复杂度(最坏情况),time-complexity,Time Complexity,难以找到最坏情况下的时间复杂度。这种情况适用于大小相同(n)的两个排序数组的交集 不确定如何计算带有两个条件的while循环,或者如何计算if和elseif语句 我知道大0将是N+N,但不知道如何显示最坏的情况 int printIntersection(int arr1[], int arr2[]) { int i = 0, j = 0; while (i < n && j < n) { if (arr1[i] < arr2[j])

难以找到最坏情况下的时间复杂度。这种情况适用于大小相同(n)的两个排序数组的交集

不确定如何计算带有两个条件的while循环,或者如何计算if和elseif语句

我知道大0将是N+N,但不知道如何显示最坏的情况

int printIntersection(int arr1[], int arr2[])  {
  int i = 0, j = 0;
  while (i < n && j < n) {
    if (arr1[i] < arr2[j])
      i++;
    else if (arr2[j] < arr1[i])
      j++;
    else /* if arr1[i] == arr2[j] */ {
      cout << arr2[j] << " ";
      i++;
      j++;
    }
  }
}
int-printIntersection(int-arr1[],int-arr2[]{
int i=0,j=0;
而(icout为了证明在最坏的情况下循环将进行2N次迭代,可以使用以下参数。
在每个步骤中给出两个索引
i
j

  • 如果
    arr1[i]
    i
    递增1
  • 如果
    arr2[i]>arr1[j]
    j
    增加1
  • 如果
    arr2[i]=arr1[j]
    i
    j
    都增加1
在每次迭代中,i和j之间至少有一个迭代增加1,最大迭代次数以2N为界(i和j都从0增加到n-1),
您将得到最坏情况下的时间复杂度。

每次迭代,至少是
i
j
(或两者)增量,直到其中一次到达数组的末尾。因此最多有m+n-1次迭代。