一个包含 n 个字符串的列表,每个字符串的长度为 n,使用合并排序算法按字典顺序排序。此计算的最坏情况运行时间是
(A) O(n log n)
(B) O(n 2 log n)
(C) O(n 2 + log n)
(D) O(n 2 )答案:(乙)
解释:
当我们对一个由 n 个整数组成的数组进行排序时,涉及的比较总数的递归关系将是,
T(n) = 2T(n/2) + (n) 其中 (n) 是为了合并大小为 n/2 的 2 个已排序子数组的比较次数。
= (nlog2n)
我们给出了 n 个字符串,而不是比较需要 O(1) 时间的整数。我们可以在 O(n) 最坏情况下比较 2 个字符串。因此,现在的总比较次数将是 (n2log2n),其中每个比较现在需要 O(n) 时间。
通常,归并排序进行 (nlog2n) 次比较,如果每次比较都可以在 O(1) 时间内完成,则在 (nlog2n) 时间内运行。
参见 https://www.geeksforgeeks.org/data-structures-and-algorithms-set-28/ 的问题 5
此解决方案由Pranjul Ahuja 提供
这个问题的测验