Java 在循环中查找avg语句,如大O、O(n)等
我离得太近了,我能尝到!我要计算我的方法中的所有语句,并找到取某个值“n”的语句的平均数。因此,我相信我的语句计数器已正确设置了所有内容,但我不确定如何以一种可以取每个“n”的平均数的方式计算此循环。我相信我必须将我的全部语句除以某个值,但我不确定这个数字是多少——有人能给我指出正确的方向吗?我知道我最终应该得到一个二次fxn,O(n^2) 这是我正在评估的方法Java 在循环中查找avg语句,如大O、O(n)等,java,methods,big-o,Java,Methods,Big O,我离得太近了,我能尝到!我要计算我的方法中的所有语句,并找到取某个值“n”的语句的平均数。因此,我相信我的语句计数器已正确设置了所有内容,但我不确定如何以一种可以取每个“n”的平均数的方式计算此循环。我相信我必须将我的全部语句除以某个值,但我不确定这个数字是多少——有人能给我指出正确的方向吗?我知道我最终应该得到一个二次fxn,O(n^2) 这是我正在评估的方法 public static int myMethod(int[] array) { int statements = 0;
public static int myMethod(int[] array) {
int statements = 0;
for (int next = 1; next < array.length; next++) {
statements++;
int val = array[next];
int index = next;
while (index > 0 && val < array[index - 1]) {
statements++;
array[index] = array[index - 1];
index--;
}
array[index] = val;
}
return statements;
}
编辑:我应该提到这个方法的作用。。。它取一个整数,比如说5,从一个随机顺序开始,它以升序排列1到5,例如,如果它是5,我们可以有4 1 2 3 5,它会把它组织成一个数组,1 2 3 4 5。。。。谢谢 我无法确定您试图计算的是什么,但如果我猜对了,n将是数组的大小(
array.length
),您需要计算数组中每个成员的平均语句数
所以
avgStatements = statements/array.length
但是,如果要计算所有语句的数量,应该注意,内部循环有两条语句(不包括++),而外部循环有三条语句
因此,您可能应该这样计算:
public static int myMethod(int[] array) {
int statements = 0;
for (int next = 1; next < array.length; next++) {
statements+=3;
int val = array[next];
int index = next;
while (index > 0 && val < array[index - 1]) {
statements+=2;
array[index] = array[index - 1];
index--;
}
array[index] = val;
}
return statements;
}
公共静态int-myMethod(int[]数组){
int语句=0;
for(int next=1;next0&&val
好的,我们有+=3个语句,因为“int val…”、“int index…”和“while()”都是在该循环中执行的语句吗?然后是while循环内部的相同理论?请注意,我的平均语句似乎正在形成一个线性函数,当我期望它是二次函数时,我期望avgStatements变量的值增加得更快。@Consuelawhile
不是这三个变量中的一个(因为内部循环是单独计算的)。第三个是array[index]=val
@Consuela为了使此代码与数组的长度成线性关系,语句/array.length应该是常量。@Consuela如果是二次的,则语句/(array.length*array.length)应该是常量。
public static int myMethod(int[] array) {
int statements = 0;
for (int next = 1; next < array.length; next++) {
statements+=3;
int val = array[next];
int index = next;
while (index > 0 && val < array[index - 1]) {
statements+=2;
array[index] = array[index - 1];
index--;
}
array[index] = val;
}
return statements;
}