int i;
for(i=0;i<n;i++)
{
if(i==number);
break;
}
OR
for(i=0; ;i++)
{
if(i==number)
break;
}
在for循环中删除比较部分是否会影响时间复杂度?
答案 0 :(得分:1)
你不能说哪个更准确......
第一个的时间复杂度为O(min(n, number))
,第二个为O(number)
。
如果n大于(或等于)数字,则第一个将等于第二个。
O(number)
(数字小于n,min(n, number) = number
O(number)
如果n小于数字,则第一个会更快(因为它也会在n中停止)。
O(n)
(因为n小于数字min(n, number) = n
O(number)
在整体视图中,第一个会更快。
正如你所看到的,删除for look中的比较确实有所不同,鉴于第二种情况,它们的复杂性变得不同,这是非常明显的。