Algorithm 求和运行时算法分析
我在努力解决这个问题。以前的问题我没有做过任何问题。这就是我要做的 我正在尝试使用求和来推导运行时的表达式。 然后求解它们,得到 Tn或Tn,m不使用求和写入。 我想计算println作为任何变量n和/或m的函数执行的次数Algorithm 求和运行时算法分析,algorithm,runtime,analysis,Algorithm,Runtime,Analysis,我在努力解决这个问题。以前的问题我没有做过任何问题。这就是我要做的 我正在尝试使用求和来推导运行时的表达式。 然后求解它们,得到 Tn或Tn,m不使用求和写入。 我想计算println作为任何变量n和/或m的函数执行的次数 任何帮助都会有帮助。他在这里谈论的数学技巧是什么?如果我知道某个数学技术所指的术语,我会搜索并做更多的研究。你有以下while循环: 我们可以将其重写为for循环,如下例所示: int i; for(i=n; i<= 1; i= i/2){ System.out
任何帮助都会有帮助。他在这里谈论的数学技巧是什么?如果我知道某个数学技术所指的术语,我会搜索并做更多的研究。你有以下while循环: 我们可以将其重写为for循环,如下例所示:
int i;
for(i=n; i<= 1; i= i/2){
System.out.println("tick");
}
通过以上内容,我们可以了解print语句的执行次数。当n是2的幂时,执行次数似乎会增加。让我们看看二次幂的迭代次数是什么样的
Value of 'n' #Executions of the print statement
n=1 1
n=2 2
n=4 3
n=8 4
n=16 5
n=32 6
好的,我们现在可以看到另一种模式,2的幂增加1,例如2^1,2^2等。迭代次数增加1,所以让我们重写上面的内容:
Value of 'n' #Executions of the print statement
n=1 = 2^0 1
n=2 = 2^1 2
n=4 = 2^2 3
n=8 = 2^3 4
n=16 = 2^4 5
n=32 = 2^5 6
因此,我们可以将数字2提升为,只需添加一个,就可以得到print语句的执行次数。例如,当n=32时,我们将这个数字改为2的幂,比如2^5,然后我们取“2”上升的数字,即“5”,再加上1,得到迭代次数,即6
因此,可用于解决该while循环的函数为:
fn=log2n+1
您还可以使用求和来计算while循环的函数。
您可以看到一些将循环更改为求和的方法 使用给定的提示。这决不是一个困难的问题。
Value of 'n' #Executions of the print statement
n=1 1
n=2 2
n=4 3
n=8 4
n=16 5
n=32 6
Value of 'n' #Executions of the print statement
n=1 = 2^0 1
n=2 = 2^1 2
n=4 = 2^2 3
n=8 = 2^3 4
n=16 = 2^4 5
n=32 = 2^5 6