我需要编写一个ac代码,它将从距离原点最近的点 的点到与原点距离最大的点的随机数2d个点进行排序。我需要有一个n * log(n)的时间复杂度,其中n是我们从用户获得的点的数量,我想使用堆排序方法。唯一的问题是通过等式(x,y和(0,0)即sqrt((x^2)+(y^2))之间的距离并将此公式应用于我使用的排序方法。只需寻找一些提示或任何关于如何我是否继续从这里,所以我会很感激 一条建议根据距离原点的距离排序2d点
回答
任何好的比较排序算法将运行在O( n log n)。为了提高效率,您希望比较器尽可能快地运行。一个想法是:比较x^2+y^2
而不是实际的距离。另一种方法是:为每个点计算一次数量并将其缓存到点对象或其他位置,而不是为每次比较重新计算。
堆排序解决方案:
1.创建从原点的每个点的距离的最大堆。
2.假设你正在通过数组实现堆,则只需创建一个包含该点索引的虚拟数组。
3.just正常堆排序&当您在索引之间进行交换时,也交换虚拟数组中的相同索引。
lets say my input from user is following point
1,0
8,6
4,4
6,0
所以我的距离数组将包含距离
1,10,sqrt(32),6
我的虚拟阵列将包含每个点的正常指数
1,2,3,4
现在装箱它的阵列会后创造最大堆 10,6,sqrt(32),1
所以那时候你的哑数组看起来就像 2,4,3,1
。 现在应用堆排序10将与1交换以及2将 在虚拟阵列&等等......
交换用1通过这虚拟阵列,你会得到点的所有指标是距离原点最近距离最近
告诉我,如果有什么是你不明白的。
术语'max heap'是什么意思? –
其中父元素总是大于其子的堆 –
我想你知道有两种堆,一种是父亲总是小于孩子,这被称为最小堆,另一种是父母大于孩子被称为最大堆。 –
- 1. Lucene.Net排序距离点的结果
- 2. 根据距离和受欢迎程度对地点排序
- 3. 单点的距离
- 4. 距离某一点的线段距离上的点
- 5. 找到距离地点最小总距离的点的算法
- 6. 2D距离约束
- 7. 谷歌地点api排名的距离
- 8. 特定距离内的点
- 9. 到点的最短距离
- 10. Android的排序按距离
- 11. 点对点距离(2D)和交点坐标
- 12. 根据节点对距离在图表上绘制节点
- 13. 距离Cell塔的距离
- 14. 欧几里德距离点
- 15. 地图点过滤距离
- 16. 按距离排序上ElasticSearch
- 17. Elasticsearch地理距离排序
- 18. tableview按距离排序swift
- 19. Algolia按ROUTE距离排序
- 20. R metaMDS排序距离
- 21. Swift Firebase按距离排序
- 22. 蛇的头部距离身体有几点距离(C++游戏)
- 23. 从距离阈值距离更近的云中移除点
- 24. 如何获得距离眩晕两点之间的距离
- 25. 通过距离参考点的距离查找全部
- 26. Android:MapController.zoomToSpan:给定距离和中心点的距离
- 27. Python:计算点距离N的距离尺寸线
- 28. 使用地理位置确定距离固定点的距离
- 29. 如何根据距离对foursquare地点api的结果进行排序?
- 30. 从点到另一点的距离
这是什么问题?采取任何排序功能,并在该代码部分比较两个元素/点,计算两个距离并首先采用较低distacne的点。 – deviantfan