首先让我正确地表达问题:
问题:有一个包含超过一百万个点(x,y)的文件,每个点代表一颗星。地球位于(a,b)上。现在,任务是构建一种算法,该算法将返回距离地球最近的100颗星。你的算法的时间和空间复杂度会是多少?
这个问题已经在各种面试中问了很多次。我尝试查找答案,但没有找到令人满意的答案。
我想到的一种方法是使用大小为100的最大堆。计算每颗星的距离,并检查距离是否小于最大堆的根节点。如果是,则用该点替换根节点并调用heapify。
还有其他更好/更快的答案吗?
P.S: 这不是一个作业问题。