O(log n)是否是限制为长度为n的有序字符串数组的最差情况搜索时间?
我今天刚刚做了一个测试,我想知道我是对还是错,选择这些......
编辑:我编辑了这个问题,以便更清楚。
答案 0 :(得分:0)
在排序的字符串数组中搜索字符串将是O(|S| * logn)
,其中|S|
是字符串的平均长度,n
是数字字符串,使用binary search,因为它有O(logn)
比较操作,每个比较都是O(|S|)
(它必须读取字符串...)
如果您将字符串的长度视为常量 - 它是O(logn)
。在谈论字符串时,通常不会采用这种假设。
请注意,还有其他数据结构 - 例如trie,可以提高复杂性。 Trie允许O(|S|)
搜索集合中的每个字符串。
P.S。
从数学上讲,由于大O符号是上限,而不是紧束缚 - 所有答案都是正确的 1 二进制搜索,它是{ {1}},O(n)
,O(n/2)
,O(logn)
,因为所有这些都为二进制搜索提供了渐近上界。
(1)假设二元搜索并且所有字符串都有有限长度,因此每个比较操作都是O(sqrt(n))
。
答案 1 :(得分:0)