小编jin*_*wen的帖子

Javascript - 查找距离给定点(2D)最近的 N 个点

我需要一种算法来对约 2,500 个 [经度、纬度] 数组的列表进行排序,以找到与给定 [经度、纬度] 最接近的 N 个点。特定用例是寻找最近的出租车进行叫车

我搜索过在线资源,其中大多数都只指向最小值。我编写了一些代码,通过 forEach 循环遍历列表并计算到感兴趣点的欧几里得距离,将距离放入数组中,对其进行排序,然后提取 3 个最小距离,但随后我必须找到索引最小的距离,这导致了较长的运行时间。我也考虑过 KNN,但觉得它使问题过于复杂

有没有更有效的方法来循环并提取 3 个最近的点?例如,一些内置方法?

编辑:这是一个例子:

兴趣点:[103, 1.3]

数据:

[
    [103.6632, 1.32287], [103.66506, 1.30803], [103.67088, 1.32891],
    [103.67636, 1.3354], [103.67669, 1.32779], [103.67927, 1.31477],
    [103.67927, 1.32757], [103.67958, 1.31458], [103.68508, 1.32469],
    [103.6927, 1.3386], [103.69367, 1.34], [103.69377, 1.37058],
    [103.69431, 1.37161], [103.69519, 1.35543], [103.69538, 1.34725],
    [103.6961, 1.33667], [103.696918716667, 1.35110788333333],
    [103.69731, 1.35], [103.698615333333, 1.33590666666667],
    [103.69975, 1.35], [103.70129, 1.34], [103.70247, 1.34],
    [103.70366, 1.34], [103.70394, 1.33948], [103.70403, 1.34081],
    [103.704697166667, 1.33546383333333], [103.70504, 1.34],
    [103.706281333333, 1.344646], …
Run Code Online (Sandbox Code Playgroud)

javascript sorting algorithm

6
推荐指数
1
解决办法
103
查看次数

标签 统计

algorithm ×1

javascript ×1

sorting ×1