哪个“for”循环具有更好的时间复杂度?

时间:2017-02-01 21:46:20

标签: algorithm linear-search

    int i;
    for(i=0;i<n;i++)
    {
     if(i==number);
       break;
    }

OR

    for(i=0; ;i++)
    {
    if(i==number)
    break;
    }

在for循环中删除比较部分是否会影响时间复杂度?

1 个答案:

答案 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中的比较确实有所不同,鉴于第二种情况,它们的复杂性变得不同,这是非常明显的。