Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
要在 n 个字符的字符串上构建一个 suffis 数组,
总时间复杂度似乎是 O(n) + O(nlogn) = O(nlogn)。
但我读到它是 O(n^2 log n) 并且无法理解。有人可以解释一下吗?
首先声明O(n) + O(nlogn) = O(n)是错误的。O(n) + O(nlogn) = O(nlog(n)).
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)).
O(n)
O(n * log (n) * n) = O(n^2 * log(n))