Big-O表示法中的计算复杂性

时间:2012-11-30 04:56:56

标签: performance algorithm

如何根据输入大小,以Big-O表示法指定算法的计算复杂度,其执行遵循以下模式?

Input size: 4
Number of execution steps: 4 + 3 + 2 + 1 = 10

Input size: 5
Number of execution steps: 5 + 4 + 3 + 2 + 1 = 15

Input size: 6
Number of execution steps: 6 + 5 + 4 + 3 + 2 + 1 = 21

3 个答案:

答案 0 :(得分:4)

从技术上讲,您没有提供足够的信息来确定复杂性。在目前为止的信息中,对于大于5的所有输入大小,可能需要21个步骤。在这种情况下,无论大小4和5的行为如何,它都是O(1)。复杂性是关于限制大输入大小的行为,不是关于三种极小尺寸的行为方式。

如果大小为n的步数通常是从1到n的数字之和,那么步数的公式确实是n(n + 1)/ 2并且它是O(n ^ 2)。

答案 1 :(得分:3)

对于任何跟随模式1 + 2 + 3 + 4 + .... + n的系列,系列之和为n(n + 1)/ 2,即O(n ^ 2) ..

在你的情况下,步数永远不会是n ^ 2,因为在每个级别我们都要少一步(n + n-1 + n-2),但是大的Oh表示用于指定函数增长率的上限因此你的大O将是O(n ^ 2),因为它超过n个步数但小于n ^ 2步数。

答案 2 :(得分:-2)

我认为它应该是O(N),因为它就像:给定一个N大小的数组,并迭代它(如果我们不关心加计算时间)。

顺便说一句,我认为(n + 1)*n/2只是总和的结果,而不是算法的复杂性。