Find the unique mapping between elements of two same size arrays
这是一个众所周知的访谈问题,很容易找到对于平均情况具有O(NlogN)和对于最坏情况复杂度具有O(N ^ 2)的算法(使用快速排序的概念)。同样使用与排序问题相同的技术,我们可以证明任何算法至少应该进行NlogN比较。
所以我无法回答的问题是,这个问题的最坏情况是O(NlogN)算法吗?也许它应该类似于合并排序。
答案 0 :(得分:3)
是的,从1995年开始,已经存在针对此问题的最坏情况的O(n log n)时间算法,但它们看起来相当复杂。以下是Jeff Erickson's algorithm notes的两个引文:
JánosKomlós,Yuan Ma和EndreSzemerédi,在O(n log n)时间内对螺母和螺栓进行分类,SIAM J. Discrete Math 11(3):347-372,1998。
< / LI>Phillip G. Bradford,最佳匹配螺母和螺栓,技术报告MPI-I-95-1-025,Max-Planck-InstitutfürInformatik,1995年9月。
正如Jeff所言,“算法及其分析都是非常技术性的,并且隐藏在O(·)符号中的常量非常大。”他还指出布拉德福德的算法出现在第二位,但略微更简单。