Time complexity 交叉口的时间复杂度(最坏情况)
难以找到最坏情况下的时间复杂度。这种情况适用于大小相同(n)的两个排序数组的交集 不确定如何计算带有两个条件的while循环,或者如何计算if和elseif语句 我知道大0将是N+N,但不知道如何显示最坏的情况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])
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;
而(i cout为了证明在最坏的情况下循环将进行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次迭代。