在已经指定运行时间时解决算法中的问题,例如,theta(nlogn)

时间:2012-09-17 04:20:46

标签: algorithm computer-science big-o

本学期我参加了算法课程,我正在尝试解决CLRS中的问题

2.3-7 描述一个theta(n lg n)时间算法,给定一组n个整数和另一个整数 整数x,确定S中是否存在两个和的元素 完全是x。

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

任何人都可以告诉我在指定运行时间时解决算法的一般方法是什么?

感谢。

1 个答案:

答案 0 :(得分:5)

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

针对您的问题的算法思路:

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