int i = 0;
int n = 20;
while (i < n)
{
i++;
int j = i;
while (i < n)
{
printf("this is %d", i);
i++;
}
i = j;
}
因此,要估算此函数的时间复杂度,我的估算方法是外循环运行n
次。内循环运行n - 1
次?那么此嵌套循环的时间复杂度是O(n^2)
吗?
答案 0 :(得分:1)
您可以重写初始代码
$.ajax({
type: 'get',
url: url,
success: function (data) {
if (data[0] != null) {
console.log('has data');
} else {
console.log('does not have data');
}
}
});
转换为等效的 :
int n = 20;
int i = 0;
while (i < n)
{
i++;
int j = i;
while (i < n)
{
printf("this is %d",i);
i++;
}
i = j;
}
现在很明显,您有int n = 20;
for (int i = 1; i < n; ++i)
for (int j = i; j < n; ++j)
printf("this is %d", j);
的时间复杂度:您有
O(n**2)
操作((n - 1) + (n - 2) + (n - 3) + ... + 3 + 2 + 1 = n * (n - 1) / 2
)和
printf(...)
答案 1 :(得分:0)
在随后的迭代中,内循环运行次数为n-1,n-2,n-3,...,1。因此,总和为n(n-1)/ 2,这导致渐近时间复杂度为O(n ^ 2)。