摘要:
最近在工作中碰到了这个问题:已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点。
团队的第一反应自然是按照两点间距离公式, 遍历N个已知点,然后排序获得前10个最短距离的结果。
只是,我从来不是一个规规矩矩的人。我一直推崇用人类直觉思维来编程,而不要被僵化的程序思想束缚。
传统距离公式,计算N个点的距离需要2N次的减法和平方。
而事实上, 一个真正的人类,是不会把所有N个点的距离都计算一遍的。大多数点都会被某些快速条件过滤掉的。
今天先把问题在这里写下来, 有时间在把优化后的算法补充进来。 阅读全文