在n个字符的字符串上构建一个suffis数组,
总时间复杂度显示为O(n)+ O(nlogn)= O(nlogn)。
但我读到它是O(n ^ 2 log n)并且无法理解如何。有人可以解释一下吗?
答案 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))
。