有序的字符串数组 - 最坏的情况?

时间:2012-05-29 15:10:01

标签: algorithm big-o

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

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

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

编辑:我编辑了这个问题,以便更清楚。

2 个答案:

答案 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)

Sequential Search:

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

Binary Search:

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