【问题标题】:solving an issue in algorithms when the running time is already specified ,e.g., theta(nlogn)在已经指定运行时间时解决算法中的问题,例如 theta(nlogn)
【发布时间】:2012-09-17 04:20:45
【问题描述】:

这学期我学习了算法课程,我正在尝试解决 CLRS 中的一个问题

2.3-7 描述一个 theta(n lg n) 时间算法,给定一个包含 n 个整数的集合 S 和另一个 整数 x,判断 S 中是否存在两个元素之和为 正好 x。

我不知道如何解决这个问题。 我正在尝试使用合并排序算法来解决它,因为它在 nlogn 时间内完成,但我不知道这是否是正确的方法。

谁能告诉我在已经指定运行时间的情况下求解算法的一般方法是什么?

谢谢。

【问题讨论】:

    标签: algorithm computer-science big-o


    【解决方案1】:

    我怀疑此类问题是否有任何通用方法,例如在任何“提议算法”任务中。但是,所需的运行时可以提示要使用的“构建块”(例如log 的存在通常表明需要树或排序数组)。例如,您可以查看 tag wiki for 'big-o' 以获取每个所需运行时的算法示例。

    解决您的问题的算法思路:

    首先,对数组进行排序(O(n lg n));然后对于数组的每个元素y,检查是否存在元素x-y(还有O(n lg n),因为数组已排序)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      相关资源
      最近更新 更多