我辅导学生,她的一项任务是描述一维案例中最近一对点的O(nlogn)算法。但限制是她不允许使用分而治之的方法。我从几年前用户发布的问题中了解了二维案例。如果有人想看一下,我会链接它:对于二维案例(飞机) - "Closest pair of points" algorithm。
然而,对于1-D情况,我只能想到一个解决方案,它涉及检查线上的每个点并将其与其左侧和右侧的最近点进行比较。但是这个解决方案不是O(nlogn),因为检查每个点将花费与n成比例的时间,并且每个点的比较将花费与2n成比例的时间。如果不使用分而治之的方法,我不确定log(n)会来自何处。
出于某种原因,我无法提出解决方案。任何帮助将不胜感激。
答案 0 :(得分:2)
提示:如果点数从左到右排序,你会做什么,复杂性是多少?首先订购积分的复杂程度是多少?
答案 1 :(得分:1)
在我看来,有人可以:
总体结果为O(n log n)。