因此,要澄清这个问题:
集合A和集合B集合A中的每个元素在集合B中都有一个伙伴,您不能根据将它与同一集合的成员进行比较来对这两个集合进行排序,即,集合B中的每个b元素都与集合B的任何其他b都没有区别(同样对于A)。当爱与碧匹配,你可以告诉我们,如果`Bi
Ai,Bi < Ai或Bi = Ai`。设计一个运行时间为O(nlogn)的算法。
,
或
二次时间的明显答案是琐碎且无济于事的- 尽管这是我迄今为止提出的最好的答案。log(n)使我认为应该使用递归或某种二叉树,但是我不确定如果不能比较同一集合中的元素,如何创建二叉树。另外,我不确定如何使用递归调用来产生比仅运行嵌套的for循环更大的效果。任何提示将非常感谢。
您尚未说清楚,但是您的问题看起来像是“ 匹配螺母和螺栓”问题。
这里的想法是选择一个随机螺母a,找到匹配的螺栓b。使用螺母a划分螺栓,使用螺栓b划分螺母,然后像quicksort一样递归。
(当然,我们正在谈论的是nlogn的平均情况,而不是最坏的情况)。