关于算法:两组项目。集合A的每个元素在集合B中都是唯一的匹配。在O(nlogn)时间内将集合A的每个项目与集合B中的项目匹配

Two sets of items. Each element of set A a unique match in set B. Match each item of set A to item in set B in O(nlogn) time

因此,为了澄清这个问题:

设置A和B集集合A中的每个元素在集合B中都有一个伙伴不能根据与同一集合中的成员的比较对两个集合进行排序,即b的每个b元素与b集合中的任何其他b元素都不可区分(对于a也是如此)。当ai与bi匹配时,你可以判断是Bi > AiBi < Ai还是Bi = Ai。设计了一种运行时间为o(nlogn)的算法。

关于二次时间的显而易见的答案是微不足道的,也没有帮助——尽管这是我迄今为止提出的最好的答案。日志(n)让我觉得我应该使用递归或某种二进制树,但我不确定如何在不能够比较同一集合中的元素的情况下创建二进制树。此外,我不知道如何使用递归调用来实现比运行嵌套for循环更大的效果。任何小费都将不胜感激。


你没有说得很清楚,但你的问题看起来像是配套的螺母和螺栓问题。

我们的想法是随机选择一个螺母A,找到匹配的螺栓B。用螺母A隔开螺栓,用螺栓B隔开螺母,然后像quicksort一样重复。

(当然,我们讨论的是平均情况,而不是最坏的情况)。