两套物品.集A中的每个元素在集合B中是唯一匹配.将集合A中的每个项目与集合B中的项目在O(nlogn)时间内匹配

slm*_*ers 5 algorithm

所以,澄清一下这个问题:

设置A和集合B集合A中的每个元素都具有集合B中的伙伴,您不能基于将它与同一集合的成员进行比较来对任何集合进行排序,即,B的每个b元素与集合B中的任何其他b无法区分(同样为A).当Ai与Bi匹配时,您可以判断是否Bi > Ai,Bi < Ai或者Bi = Ai.设计一个运行时间为O(nlogn)的算法.

二次时间的明显答案是微不足道的,没有帮助 - 虽然这是我提出的最好的答案.log(n)让我觉得我应该使用递归或某种二叉树,但我不确定如何创建二叉树而不能比较同一组中的元素.另外,我不知道如何使用递归调用来获得比仅运行嵌套for循环更大的效果.任何提示将非常感谢.

小智 9

你没有说清楚,但你的问题看起来像是匹配的螺母和螺栓问题.

这个想法是选择一个随机螺母a,找到匹配的螺栓b.使用螺母a对螺栓进行分区,并使用螺栓b对螺母进行分区,然后像快速排序一样递归.

(当然,我们谈论的是nlogn的平均情况,而不是最坏的情况).