多变量的大O效率

时间:2010-12-27 16:37:51

标签: algorithm performance big-o

我正在尝试评估输入是字符串数组的函数的效率。该算法始终遍历此数组中的每个项目。此数组中包含的此字符串具有可变长度。在这个初始for循环中,在每个字符串上调用一个字符替换函数。我相信替换函数本身就是O(n),其中n是字符串的长度。

所以我很困惑如何在这里评估大效率。如果n是数组的大小,我知道它至少是O(n)。但是对于可变的字符串长度,如何通过字符串替换来评估整体效率?你会说n是数组的大小,并使用其他变量来表示每个字符串的不同大小吗?

2 个答案:

答案 0 :(得分:9)

就个人而言,我会通过输入数据的 size 来表达效率(而不是数组的长度)。因此,如果输入为t个字节,则运行时间为O(t)。此处的t也是所有字符串的通用长度。

答案 1 :(得分:7)

我认为有两种说法可以解决这个问题(很多可能)。

首先要说的是O(N),其中N是字符总数。

另一个可以说是O(N*M),其中N是字符串数,M是每个字符串的平均字符数。请注意,这实际上与我的上述答案相同。您可以说M = k/N,因此您获得O(N*k/N)O(k),其中k是所有字符串中的总字符数。