可能重复:
Determining as a function of n how often the statement incrementing the variable count is performed
好的,所以我仍然是分析算法的新手,并希望能够在此分享任何帮助。我试图确定if语句作为n的函数执行的频率。我相信外部循环是n,并且还认为内部循环是n,但是if语句有问题。任何提示都表示赞赏,谢谢。 这是循环:
for (int k = 0; k < n.length; k++) {
for (int j = k; j > 0; j--) {
if (n[j] < n[j-1]) {
int x = n[j];
n[j] = n[j-1];
n[j-1] = x;
答案 0 :(得分:4)
如果我正在做这个家庭作业问题,我会从n开始用一些小数组(所以n.length很小),比如3或4,然后手工完成。你很快就会看到这种模式。
答案 1 :(得分:1)
此示例可能会对您有所帮助
int[] n = new int[] { 1, 2, 3, 4 };
int count = 0;
for (int k = 0; k < n.length; k++) {
for (int j = k; j > 0; j--) {
count++; // if program reaches here, the below 'if' condition will be executed
if (n[j] < n[j - 1]) {
int x = n[j];
n[j] = n[j - 1];
n[j - 1] = x;
}
}
}
System.out.println("If condition executed - "+count+" times.");
答案 2 :(得分:1)
上面有两个答案!
要获得明确的呼叫次数,请插入计数器并执行一些println / printf-Debugging(或使用记录器)。
为了进一步了解这些循环的内容并计算复杂性,最好使用低n值进行手动迭代。
您应该按照上面的两个答案来全面了解您的作业!