C 4嵌套';对于';循环?
嵌套C 4嵌套';对于';循环?,c,algorithm,for-loop,time-complexity,nested-loops,C,Algorithm,For Loop,Time Complexity,Nested Loops,嵌套for循环的最差和最佳时间复杂度是什么 int compare(int n, int A[][]) { int i, j, k, m; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { for (k=1; k<=n; k++) { for (m=1; m<=n; m++) { if (A[i][j]
for
循环的最差和最佳时间复杂度是什么
int compare(int n, int A[][]) {
int i, j, k, m;
for (i=1; i<=n; i++) {
for (j=1; j<=n; j++) {
for (k=1; k<=n; k++) {
for (m=1; m<=n; m++) {
if (A[i][j] == A[k][m] && !(i==k && j==m))
return 1;
}
}
}
}
return 0;
}
int比较(int n,int A[]{
int i,j,k,m;
对于(i=1;i最佳情况时间复杂度是常数,O(1)
。当网格A
的第一个和第二个元素相等时,将出现最佳情况
1 1 x x x
A = x x x x x
x x x x x
x x x x x
最坏情况的复杂性是O(n^4)
。当网格A
的所有元素都是唯一的时,最坏情况就会发生
1 2 3 4
A = 5 6 7 8
9 10 11 12
13 14 15 16
最佳情况时间复杂度是常数,O(1)
。当网格A
的第一个和第二个元素相等时,将出现最佳情况
1 1 x x x
A = x x x x x
x x x x x
x x x x x
最坏情况的复杂性是O(n^4)
。当网格A
的所有元素都是唯一的时,最坏情况就会发生
1 2 3 4
A = 5 6 7 8
9 10 11 12
13 14 15 16
最佳情况:O(1),当A[1][1]=A[1][2]
最坏的情况是:O(n4),当没有重复的元素->时,您将为它的每个元素迭代整个数组
请注意,使用映射或集合(称为结构)可以更有效地实现它:
- 迭代数组
- 如果结构已经有[i][j],则返回1
- 在结构中添加[i][j]
- 数组迭代结束后返回0
这将给您一个O(n2 log n)或O(n2)的更坏情况,这取决于您使用的结构。最佳情况是:当a[1][1]=a[1][2]
最坏的情况是:O(n4),当没有重复的元素->时,您将为它的每个元素迭代整个数组
请注意,使用映射或集合(称为结构)可以更有效地实现它:
- 迭代数组
- 如果结构已经有[i][j],则返回1
- 在结构中添加[i][j]
- 数组迭代结束后返回0
这会给你一个更糟糕的O(n2 log n)或O(n2)的情况,这取决于你使用的结构。在C中,数组很少从1
索引。通常从0
索引数组,比如for(i=0;i
你是说!(i==k | j==m)
?如果(A[i][j]==A[k][m]&&i!=k&&j!=m),这比更难理解
我的意思是不是对于I==k
和j==m
这两个条件都得到满足。旁白:在C中,数组很少从1
索引。通常从0
索引数组,例如对于(I=0;I
你的意思是!(I==k | j==m)
?如果(A[i][j]==A[k][m]&&i!=k&&j!=m),这比更难理解
我的意思是不是对于I==k
和j==m
这两个条件都得到满足。谢谢@Kaidul这是我的想法,但我认为它是正确的。谢谢@Kaidul这是我的想法,但我认为它是正确的。谢谢@Srini和juvian你认为通过改变逻辑t不使用映射或集合可以提高效率?@RajatGupta不确定你的意思。使用映射或集合已经意味着改变我在循环方面的意思。但现在我明白了你的意思。:)在你和@Srini给出的解决方案中,最好的情况是,I!=k
应该与j!=m
一起得到满足。因此,a[1][1] =A[1][2]不正确。这有意义吗?还是我让它更混乱了?@RajatGupta!(I==k&&j==m)相当于(I!=k | j!=m)谢谢@Srini和juvian你认为通过改变逻辑而不是使用映射或集合可以提高效率吗?@RajatGupta不知道你的意思。使用映射或集合已经意味着改变逻辑,我是指循环。但现在我明白了你的意思。:)对于你和@Srini给出的最佳解决方案,I!=k
shoul因此,A[1][1]=A[1][2]是不正确的。这有意义吗?还是我让它更混乱了?@RajatGupta!(I==k&&j==m)相当于(I!=k|j!=m)