复杂度是N还是N ^ 2?

我正在解决一个问题,我必须根据排序后的数组创建一个唯一的数组,该数组可以包含重复的元素。

我使用以下代码解决了该解决方案:

for (int i = 0; i < sorted.Length - 1; i++)
{
    if (sorted[i] == sorted[i + 1])
    {
        unqiueList.Add(sorted[i]);
        int j = i + 1;
        while (j < sorted.Length)
        {
            if (sorted[i] != sorted[j])
            {
                break;
            }
            j++;
            i++;
        }
    }
    else
    {
        unqiueList.Add(sorted[i]);
    }
}

现在,我想知道此解决方案的复杂性。

有人说是N,但有人说是N ^ 2。这在我的脑海中暗示了为什么不问相同的问题来使堆栈溢出以更好地理解它。

buwanbuzhu 回答:复杂度是N还是N ^ 2?

最坏的情况是O(N)

这有点令人讨厌,但是考虑到ijwhile循环中的每次迭代中都会增加,因此在循环中基本上没有循环。 / p>

该算法所允许的迭代次数不能超过sorted.Length


有趣的是;这表明while循环可以用if语句代替(可能不是简单的语句),但这将是一个不错的练习。

本文链接:https://www.f2er.com/3128256.html

大家都在问