前言:这不是一个家庭作业问题。我正在浏览Python中的一本algos书。
如果我有以下代码来解决字谜。
Public bool anagram (string a, string b) {
return sort(a) == sort(b);
}
让我们说排序算法是合并排序,它是 O(n log n)。由于我必须做两次,时间复杂度变为 O(n ^ 2 log n)?
答案 0 :(得分:2)
不,因为你需要经常这么做,所以复杂性仍然是O(n log n)
。
请注意,您还需要执行一项操作 - 即比较字符串。但是,它是O(n)
,而O(n + n log n)
仍为O(n log n)
。
另请注意,您的n
“未定义”:您应该说n
为max(a.length, b.length)
答案 1 :(得分:1)
不,它变为O(2*[n log n])
,但它与O(n log n)
仍然,您必须比较两个排序的字符串,它们在长度上是线性的,因此变为O(n + n log n)
,再次位于nlogn