我需要一个算法来排序一个包含大约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], [103.70689, 1.34464]
]