Java 如何解释代码的复杂性
我用java编写了一些代码,以找到一个丢失的数字,知道我的代码正在工作。我有关于如何检查程序复杂性的基本知识,我有兴趣了解如何做到这一点,请任何人帮助我或建议我阅读一些好的教程。或者帮助我了解一些与我的代码相关的渐进复杂性。多谢各位 这是我的密码Java 如何解释代码的复杂性,java,Java,我用java编写了一些代码,以找到一个丢失的数字,知道我的代码正在工作。我有关于如何检查程序复杂性的基本知识,我有兴趣了解如何做到这一点,请任何人帮助我或建议我阅读一些好的教程。或者帮助我了解一些与我的代码相关的渐进复杂性。多谢各位 这是我的密码 Scanner s1=new Scanner(System.in); System.out.println("Enter No:"); int length=s1.nextInt(); boolean isExit=false;
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是的,您可以使用渐进复杂性来实现。我将提供一些参考资料供您稍后阅读。您好,请您解释一下与我的代码相关的渐进复杂性。谢谢你的回复,我希望这能帮助你理解。