-2

O(log n)是否会是限制在长度为 n 的有序字符串数组的最坏情况搜索时间?

我今天刚做了一个测试,我想知道我是对还是错,选择这些......

  • 上)
  • O(log n)
  • O(n/2)
  • O(√n)

编辑:我编辑了这个问题以使事情更清楚。

4

2 回答 2

0

顺序搜索:

最佳:O(n) 最差:O(n)

二进制搜索:

最佳:O(1) 最差:O(log n)

于 2012-05-29T15:24:57.023 回答
0

排序的字符串数组中搜索字符串将是字符串O(|S| * logn)|S|平均长度,并且n是字符串的数量,使用二进制搜索,因为它具有O(logn)比较操作,并且每个比较都是O(|S|)(它必须读取字符串.. .)

如果您将字符串的长度视为常量 - 它是O(logn). 在谈论字符串时,通常不会采用这种假设。

请注意,还有其他数据结构 - 例如trie,可以实现更好的复杂性。Trie 允许O(|S|)搜索集合中的每个字符串。

PS
从数学上讲,由于大 O 表示法是一个上限,而不是一个紧界 -对于二分搜索,所有答案都是正确的1,它是O(n), O(n/2), O(logn), O(sqrt(n)),因为它们都为二分搜索提供了渐近上限。


(1) 假设二分查找并且所有字符串都有长度限制,所以每个比较操作都是O(1).

于 2012-05-29T15:20:28.333 回答