首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >分而治之,计算各点的秩

分而治之,计算各点的秩
EN

Stack Overflow用户
提问于 2022-05-01 11:45:06
回答 1查看 76关注 0票数 0

给出平面上的n个点。假设坐标点( x1,y1)控制着另一个点( x2,y2),如果x1≤x2和y1≤y2的话。

我们试着,对于每个点p,计算出p支配它们的点数。如何利用分而治之的方法在O(n log n)中解决这个问题?

我想如下,我们用x坐标对点进行排序,然后根据中间点,我们把点分成两部分,现在在这一步,我被卡住了。

EN

回答 1

Stack Overflow用户

发布于 2022-05-03 05:48:18

使用任意nlogn排序algo(快速排序或合并排序)对给定的点进行排序。其中比较函数同时考虑了x和y。现在,由于我们已经对列表/数组进行了排序,我们可以对这个排序的数组执行二进制搜索,以找到输入点的位置。现在,我们有排序数组中的位置,这个位置下面的所有点都是我们所需要的。如果您使用数组作为您的数据结构,由于一次性性质,位置是您的答案。

时间复杂度:排序需要n* log n二进制搜索需要log n返回位置为0(1)。

共计=n* log n+ log n+1

与n* logn相比,(logn+ 1)只是一个常数,对于一个非常大的数据集来说,这个常数变得非常小。所以,您的总体复杂度仍然是n * log。

例如,假设数据点的数目是100。然后,100 * log (100) = 200。(以基数为10)。log (100 ) +(100* log(100)) = 202。

你看,额外的日志(N)使时间复杂度从200到202。因此,对于一个非常大的数据集,您可以安全地忽略将log(n)添加为一个常量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72076377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档