我想计算代码将要采用的迭代总数

时间:2012-12-10 11:46:44

标签: java c

这是我的简单选择排序的代码。通常,排序的复杂性(时间)是在选择排序的情况下排序O(n ^ 2)所需的迭代次数 当我干这个代码对98765的样本字符串运行时,它给了我25次迭代。 只是为了与我的干跑输出交叉检查我在我的代码中放了2个vbl-noi和noj。

问:总迭代次数是= noi * noj还是noi + noj;

int index = 0; int noi = 0, noj = 0;

for (j = 0; j < 5; j++)
{
    noj++;
    index = j;
    for (i = j; i < 5; i++)
    {
        if (a[index] > a[i])
        {
            a[index] = a[index] + a[i];
            a[i] = a[index] - a[i];
            a[index] = a[index] - a[i];
            noi++;
        }

    }

}

3 个答案:

答案 0 :(得分:2)

迭代次数总是15(5 + 4 + 3 + 2 + 1),因为在你的循环中有j<5i<5。因此,您的代码复杂度为O(n ^ 0),因为在您的情况下,n为5

答案 1 :(得分:2)

复杂性不依赖于n,因为没有n。复杂度总是精确到15(1 + 2 + 3 + 4 + 5,如所述shift66)

答案 2 :(得分:0)

它是:noj [for first loop] +((noj *(noj + 1))/ 2)[for inner loop]

因为第一个循环来自1-noj而第二个循环是j-noj(其中j取决于第一个循环)