后缀数组生成O(n ^ 2 log n)的成本如何?

时间:2014-02-23 09:15:49

标签: algorithm big-o complexity-theory time-complexity suffix-array

在n个字​​符的字符串上构建一个suffis数组,

  1. 我们首先生成n个后缀O(n)
  2. 然后将它们排序为O(n log n)
  3. 总时间复杂度显示为O(n)+ O(nlogn)= O(nlogn)。

    但我读到它是O(n ^ 2 log n)并且无法理解如何。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:5)

首先,声明O(n) + O(nlogn) = O(n)是错误的。 O(n) + O(nlogn) = O(nlog(n))

第二,你之所以感到困惑 - 比较两个后缀并不是一成不变的。由于每个后缀是长度最多为n的字符串,因此两个后缀的比较大约为O(n)。因此,对n个后缀进行排序的顺序为O(n * log (n) * n) = O(n^2 * log(n))