Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这三种算法的复杂性是什么?_Java_Time Complexity_Complexity Theory - Fatal编程技术网

Java 这三种算法的复杂性是什么?

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将变

周四我有一个关于数据结构和算法的考试,去年的考试中有一道题,你必须确定用java编写的三个算法的复杂性。 你能帮我学习一下这些算法吗?也许你能解释一下你的解决方案,那真的很棒。谢谢大家!

我的解决办法是:

算法一:n*log(n)第一个循环使用O(n)运行,第二个循环使用log(n)运行,因为计数器变量在每次迭代中都会加倍

算法二:不编译,如果不使用标准java编译器编译并不重要。它在O(1)中,因为返回语句,因为这将在1次迭代后结束算法

算法三:for循环的复杂度将是n,因为i++和n/2将变成n,递归的复杂度将是O(n),因为它将执行n次。为了总结算法的复杂性,3应该是O(n),因为递归函数与循环不相连

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不客气。另外,不要忘记,如果答案令人满意地解决了你的问题,你可以接受它。