【问题标题】:Which is complexity of set difference using quick sort and binary search?使用快速排序和二进制搜索的集合差异的复杂性是什么?
【发布时间】:2013-07-02 14:09:58
【问题描述】:

我们有两个集合 A,B,我们想计算集合差 A - B,我们将使用快速排序对 B 的第一个元素进行排序,其平均复杂度为 O(n * log n),并且在我们从 A 中搜索每个元素之后B 使用具有复杂度 O(log n) 的二进制搜索,整个集合差异算法描述了哪种复杂度?如果我们考虑使用快速排序和二分搜索。我尝试使用以下算法计算集合差异的复杂性: O(n * log n) + O(log n) = O(n * log n + log n) = O(log n * (n + 1)) = O((n + 1) * log n)。对吗?

【问题讨论】:

  • 您是否试图获得平均复杂度?

标签: algorithm complexity-theory


【解决方案1】:

首先,常数在 O 表示法中并不真正计数,因为多项式的增长速度比常数快,所以 1 将归 n 所有,这意味着 O((n + 1) * log n) 只是O(n * log n)。

现在重要的问题 - 假设 A 有 m 元素,你需要做 m 二进制搜索,每个都有复杂度 O(log n)。所以总的来说,复杂度应该是 O(n * log n) + O(m * log n) = O((n + m) * log n)。

【讨论】:

  • 如果您将链接添加到维基百科或 O 符号算术的其他解释,我可以很高兴地删除我的答案
【解决方案2】:
O (n * log n) + O (log n) = O (n * log n)

http://en.wikipedia.org/wiki/Big_O_notation#Properties

如果一个函数可以以 n 中的多项式为界,那么当 n 趋向于 无穷大,可以忽略多项式的低阶项。

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2011-10-10
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2021-09-20
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多