0

可能重复:
根据 n 确定增加变量计数的语句执行的频率

好的,所以我对分析算法还是陌生的,并且希望能在这方面分享任何帮助。我试图确定 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;
4

3 回答 3

4

如果我正在做这个家庭作业问题,我会从 n 的几个小数组开始(所以 n.length 很小),比如 3 或 4,然后手动完成它。你很快就会看到这种模式。

于 2012-11-20T23:57:10.383 回答
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.");
于 2012-11-21T08:20:48.887 回答
1

上面两个答案都有点!

要获得明确的调用次数,请插入一个计数器并执行一些 println/printf-Debugging(或使用记录器)。

为了加深对这些循环的理解并计算复杂性,最好使用低 n 值进行手动迭代。

您应该按照上面的两个答案来全面了解您的作业!

于 2012-11-21T08:33:32.357 回答