【求最优算法】输入一个GPS坐标(坐标经常变换),怎样按距离由近到远排序一组GPS坐标(这组坐标数量低则10万、高则百万千万)

k-d tree 和 quad tree
■网友
我正好是做空间数据库方向的PhD,这种问题常用的数据结构是R-tree及其变种,用一个优先队列维护其结点。算法很简单,数据结构不用自己实现。开源代码参考:https://github.com/libspatialindex/libspatialindex
■网友
看这组GPS坐标序列(10万什么的)是不是固定的,是固定的就可以预处理。一维的很多树都可以直接扩展到二维上,比如B树和B树的变种。简单粗暴的也有,大体的思想就是把地图网格化,把这些点放入网格中,判断给定点落入哪个网格。
■网友
给空间数据加上空间索引,存储到支持空间数据的DBMS中,然后要做关于距离的排序就很轻松了。现代的关系型数据库,比如Oracle、SQLServer和PostgreSQL都已经内置了对空间数据的支持,很好实现。@赵雨函 提到的格网,也正是空间索引的一种实现方式。http://baike.baidu.com/view/1346795.htm
■网友
用小根堆,具体实现借本数据结构的书就行。这样可以先算出排在前几位的坐标,逐渐由近到远显示结果,用户也不会因一次性给出结果而等待太久,不过堆比较占内存。


    推荐阅读