Java 这三种算法的复杂性是什么?
周四我有一个关于数据结构和算法的考试,去年的考试中有一道题,你必须确定用java编写的三个算法的复杂性。 你能帮我学习一下这些算法吗?也许你能解释一下你的解决方案,那真的很棒。谢谢大家! 我的解决办法是: 算法一:n*log(n)第一个循环使用O(n)运行,第二个循环使用log(n)运行,因为计数器变量在每次迭代中都会加倍 算法二:不编译,如果不使用标准java编译器编译并不重要。它在O(1)中,因为返回语句,因为这将在1次迭代后结束算法 算法三:for循环的复杂度将是n,因为i++和n/2将变成n,递归的复杂度将是O(n),因为它将执行n次。为了总结算法的复杂性,3应该是O(n),因为递归函数与循环不相连Java 这三种算法的复杂性是什么?,java,time-complexity,complexity-theory,Java,Time Complexity,Complexity Theory,周四我有一个关于数据结构和算法的考试,去年的考试中有一道题,你必须确定用java编写的三个算法的复杂性。 你能帮我学习一下这些算法吗?也许你能解释一下你的解决方案,那真的很棒。谢谢大家! 我的解决办法是: 算法一:n*log(n)第一个循环使用O(n)运行,第二个循环使用log(n)运行,因为计数器变量在每次迭代中都会加倍 算法二:不编译,如果不使用标准java编译器编译并不重要。它在O(1)中,因为返回语句,因为这将在1次迭代后结束算法 算法三:for循环的复杂度将是n,因为i++和n/2将变
int算法一(int n){
整数和=0;
对于(int i=0;i1){
总和=算法三(n-1)+1;
}
否则{
总和=1;
}
对于(int i=0;i
如您所分析的,前两个是正确的。
但是对于第三个,您需要再次查看这个递归调用
if(n>1){
sum = algorithmThree(n-1)+1;
}
只要n>1,就会执行此操作。
当它达到基本条件,即n=1时,for循环将运行n/2次,然后返回到上一个递归调用,然后再次重复,这使得总的复杂性为O(n*n)。再看一看三个。@Felix不客气。另外,不要忘记,如果答案令人满意地解决了你的问题,你可以接受它。