Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 - Fatal编程技术网

Java 如何解释代码的复杂性

Java 如何解释代码的复杂性,java,Java,我用java编写了一些代码,以找到一个丢失的数字,知道我的代码正在工作。我有关于如何检查程序复杂性的基本知识,我有兴趣了解如何做到这一点,请任何人帮助我或建议我阅读一些好的教程。或者帮助我了解一些与我的代码相关的渐进复杂性。多谢各位 这是我的密码 Scanner s1=new Scanner(System.in); System.out.println("Enter No:"); int length=s1.nextInt(); boolean isExit=false;

我用java编写了一些代码,以找到一个丢失的数字,知道我的代码正在工作。我有关于如何检查程序复杂性的基本知识,我有兴趣了解如何做到这一点,请任何人帮助我或建议我阅读一些好的教程。或者帮助我了解一些与我的代码相关的渐进复杂性。多谢各位

这是我的密码

Scanner s1=new Scanner(System.in);
    System.out.println("Enter No:");
    int length=s1.nextInt();
    boolean isExit=false;
    int []a=new int[length-1];
    System.out.println("Enter all no");
    for(int i=0;i<length-1;i++){
    a[i]=s1.nextInt();
    }
    for (int i = 1; i<=length; i++) {
        for (int j = 0; j < a.length; j++) {
            if(i==a[j]){
             isExit =true;
             break;
            }
        }
        if (!isExit) {
            System.out.println(i);
            //break;
        }
        isExit = false;
    }
}
}阅读以下内容:

你想要学习的东西叫做渐进复杂性

好的视频:

也看看这个答案

关于你的职位:

for (int i = 1; i<=length; i++) {
        for (int j = 0; j < a.length; j++) {
            if(i==a[j]){
             isExit =true;
             break;
            }
        }
        if (!isExit) {
            System.out.println(i);
            //break;
        }
        isExit = false;
    }
假设内部循环中的操作需要恒定的时间O1


如果从代码复杂度的角度考虑这段代码,您会注意到外循环最多执行N次,内循环也会执行N次。因此,最多执行N^2个操作,因此算法的上限为^2,这意味着函数N^2始终在^2以上您所做的操作。

我不确定您是否特别想学习手工操作?如果没有,则可以相对轻松地使用streams查找缺失的编号:

Arrays.sort(array);
IntStream.range(0, array.length).filter(n -> !n.equals(array[n])).findAny();

这将返回一个可选值,然后可以测试它是否存在任何缺失的数字。

您的问题是什么?请解释与我的代码相关的渐进复杂性。如果您可以问一个特定的问题,您可能会得到一个特定的答案。但是解释X并不是堆栈溢出的真正含义efficency@J.Kr是的,您可以使用渐进复杂性来实现。我将提供一些参考资料供您稍后阅读。您好,请您解释一下与我的代码相关的渐进复杂性。谢谢你的回复,我希望这能帮助你理解。