这是我的简单选择排序的代码。通常,排序的复杂性(时间)是在选择排序的情况下排序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++;
}
}
}
答案 0 :(得分:2)
迭代次数总是15(5 + 4 + 3 + 2 + 1),因为在你的循环中有j<5
和i<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取决于第一个循环)