我很亲密,我可以品尝它!我要计算我的方法中的所有语句,并找到一些值“n”的平均语句数。所以我相信我的所有内容都设置正确,因为我的声明计数器,但我不知道如何计算这个循环,我可以采取每个“n”的平均值。我相信我必须用一些东西来区分我的总陈述,但我不确定这个数字是什么 - 有人能指出我正确的方向吗?我知道我应该最终获得二次方fxn,O(n ^ 2)......
以下是我正在评估的方法......
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;
}
}
这是我的测试类调用方法...
statements = myClass.myMethod(array); //this is the call we want to measure
//I believe the statements variable is working correctly.
avgStatements = statements/(something here?)
编辑:我应该提一下这个方法的作用...它需要一个整数,比如5,并且从一个随机顺序它按升序排列1到5,例如如果它是5,我们可以有4个1 2 3 5,它会将它组织成阵列,1 2 3 4 5 ....谢谢!
答案 0 :(得分:1)
我不能确定你想要计算什么,但是如果我猜对了,那就是数组的大小(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;
}