如何找到anagram Algo的时间复杂度

时间:2012-05-15 13:33:25

标签: algorithm time-complexity

前言:这不是一个家庭作业问题。我正在浏览Python中的一本algos书。

如果我有以下代码来解决字谜。

Public bool anagram (string a, string b) {
    return sort(a) == sort(b);
}

让我们说排序算法是合并排序,它是 O(n log n)。由于我必须做两次,时间复杂度变为 O(n ^ 2 log n)

2 个答案:

答案 0 :(得分:2)

不,因为你需要经常这么做,所以复杂性仍然是O(n log n)

请注意,您还需要执行一项操作 - 即比较字符串。但是,它是O(n),而O(n + n log n)仍为O(n log n)

另请注意,您的n“未定义”:您应该说nmax(a.length, b.length)

答案 1 :(得分:1)

不,它变为O(2*[n log n]),但它与O(n log n)

相同

仍然,您必须比较两个排序的字符串,它们在长度上是线性的,因此变为O(n + n log n),再次位于nlogn