我有一个很长的、半排序的纬度、经度和时区三元组列表。我希望能够快速搜索此列表以找到与任何给定纬度和经度最近的时区,因此我想将此列表制作成 KD 树。
我在想我应该首先将整个文件读入某种数据结构(什么数据结构?可能ArrayList<Triplet<Double, Double, String>>
?)。然后取该结构中的中间元素并将其作为根,给我留下一个左右列表。然后继续获取每个列表的中间元素并将其添加为左子或右子。
第一次尝试似乎很慢而且效率低下......但我觉得我做错了。你能为我提供一个算法或伪代码吗?