Algs4-2.4.28选择过滤

2.4.28选择过滤。编写一个TopM的用例,从标准输入读入坐标(x,y,z),从命令行得到值M,然后打印出距离原点的欧几里德距离最小的M个点。在N=10^8且M=10^4时,预计程序的运行时间。
答:我理解成从命令行输入一个M,求N个坐标中离原点最近的M个坐标,一般情况下N>=M,此处具体求N=10^8个坐标中离原点最近的M=10^4个坐标。

使用一个长度为M+1的大堆,堆中的每个元素为 坐标和这个坐标到原点的距离,元素离原点的距离作为比较值,新的元素加入大堆后再删除堆顶元素,这样堆中最多时有M个元素,这M个元素即为离原点最近的M个坐标。

posted @ 2019-10-25 13:37  修电脑的龙生  阅读(146)  评论(0编辑  收藏  举报