Time complexity 以下代码的时间复杂度是多少
此解决方案解决了详细列出的问题。如果继续获取Time complexity 以下代码的时间复杂度是多少,time-complexity,Time Complexity,此解决方案解决了详细列出的问题。如果继续获取i,j,使vals[i-1][j-1]==0,则最坏情况下的运行时间将是无限的,因此while循环将永远不会终止。但这种情况几乎肯定不会发生 让T表示rand7()的预期运行时间,我们有以下观察结果: 如果i==1,2,3,4,那么无论j是什么,我们都会有vals[i-1][j-1]!=0,因此在这种情况下,while循环将只迭代一次;-此事件发生的概率为4/5 如果i==5和j==1,则vals[i-1][j-1]!=0和while循环将只迭代一次
i
,j
,使vals[i-1][j-1]==0
,则最坏情况下的运行时间将是无限的,因此while
循环将永远不会终止。但这种情况几乎肯定不会发生
让T
表示rand7()
的预期运行时间,我们有以下观察结果:
- 如果
,那么无论i==1,2,3,4
是什么,我们都会有j
vals[i-1][j-1]!=0,因此在这种情况下,
循环将只迭代一次;-此事件发生的概率为4/5while
- 如果
和i==5
,则j==1
和vals[i-1][j-1]!=0
循环将只迭代一次;-该事件发生的概率为1/25while
- 在剩下的情况下,我们有
,因此我们需要用新的随机值vals[i-1][j-1]==0
-发生这种情况的概率为4/25(i,j)
int rand7()
{
int vals[5][5] = {
{ 1, 2, 3, 4, 5 },
{ 6, 7, 1, 2, 3 },
{ 4, 5, 6, 7, 1 },
{ 2, 3, 4, 5, 6 },
{ 7, 0, 0, 0, 0 }
};
int result = 0;
while (result == 0)
{
int i = rand5();
int j = rand5();
result = vals[i-1][j-1];
}
return result;
}
因此,预计的运行时间是T=25/21=O(1)
O(ff主题)
?
T = 4/5 * 1 + 1/25 * 1 + 4/25 * (1 + T)