交叉路口的时间复杂度(最坏情况)
Time complexity for an intersection (worst case)
无法找到最坏情况时间复杂度的时间复杂度。这种情况是针对相同大小 (n) 的两个排序数组的交集。
不确定如何计算带有两个条件的 while 循环或如何计算 if 和 else if 语句
我知道大 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++;
}
}
}
要证明在最坏的情况下循环将进行 2N 次迭代,您可以使用以下参数。
在每一步给定两个索引 i
和 j
:
- if
arr1[i] < arr2[j]
then i
递增 1
- if
arr2[i] > arr1[j]
then j
递增 1
- if
arr2[i] = arr1[j]
那么 i
和 j
都增加 1
每次迭代 至少 i 和 j 之间的一个递增 1,最大迭代次数以 2N 为界(i 和 j 都从 0 到 n- 1),
你得到最坏情况下的时间复杂度。
无法找到最坏情况时间复杂度的时间复杂度。这种情况是针对相同大小 (n) 的两个排序数组的交集。
不确定如何计算带有两个条件的 while 循环或如何计算 if 和 else if 语句
我知道大 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++;
}
}
}
要证明在最坏的情况下循环将进行 2N 次迭代,您可以使用以下参数。
在每一步给定两个索引 i
和 j
:
- if
arr1[i] < arr2[j]
theni
递增 1 - if
arr2[i] > arr1[j]
thenj
递增 1 - if
arr2[i] = arr1[j]
那么i
和j
都增加 1
每次迭代 至少 i 和 j 之间的一个递增 1,最大迭代次数以 2N 为界(i 和 j 都从 0 到 n- 1), 你得到最坏情况下的时间复杂度。