簡體   English   中英

如何在未排序的數組中找到最接近的double

[英]How to find closest double in unsorted array

我在離散空間中有一組點,坐標以N double []數組的形式給出。

如:

點T1 = {1.3,2.5,4-3} ---> double [] x = {1.3},double [] y = {2.5},double [] z = {4.3}

然后我有一個函數,它在連續空間的所有方向上從給定點生成偏移量,我需要在我的矩陣/雙數組中找到最接近的匹配。

問題是我無法對這些數組進行排序並應用二進制搜索,因為Point的組件很可能在排序后沒有相同的索引。

是否有一些數據結構/算法可以應用於避免迭代搜索最接近的匹配點?

組織點是否更好,以便有一個數組實例描述整個點而不是每個組件的數組?

編輯

看起來理想的解決方案將使用評論中建議的kd樹。 計算機科學算法不是我的領域,因此在我研究該主題時,用kd樹或其他替代方案展示最小例子的答案將是最有幫助的。

如果我理解你的問題,你有N個大小為M的浮點陣列,每個浮點數包含一個沿N維空間軸的點的坐標。 您還有一個浮點數,並且您想要找到浮點數最接近其中一個組件的點的索引。 如果這是正確的,我將創建一個單元數組,其元素是對(值,索引),其中value是組件之一,索引帶來組件所屬點的索引。 然后,您可以使用value作為sorting.key對數組進行排序。 此時,您可以使用float進行二進制搜索。

當然,只有當你有多個浮點數才能搜索時,構建和排序數組才有意義,因為排序將采用O(K log K),K = N * M,之后搜索將采用O(log K)。 如果你只需要搜索一個浮點數,你也可以在數組上進行完整搜索,這將是O(K)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM