我正在尝试评估输入是字符串数组的函数的效率。该算法始终遍历此数组中的每个项目。此数组中包含的此字符串具有可变长度。在这个初始for循环中,在每个字符串上调用一个字符替换函数。我相信替换函数本身就是O(n),其中n是字符串的长度。
所以我很困惑如何在这里评估大效率。如果n是数组的大小,我知道它至少是O(n)。但是对于可变的字符串长度,如何通过字符串替换来评估整体效率?你会说n是数组的大小,并使用其他变量来表示每个字符串的不同大小吗?
答案 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是所有字符串中的总字符数。