Mai*_*tor 9 sorting algorithm haskell data-structures
以下功能:
sortByDist :: (Ord a, Floating a, RealFrac a) => [V2 a] -> Map (V2 a) [V2 a]
sortByDist graph = Map.fromList $ map sort graph where
sort point = (point, sortBy (comparing (distance point)) graph)
Run Code Online (Sandbox Code Playgroud)
将列表上的每个点P映射到按其到P的距离排序的点列表.例如,sortByDist [a, b, c, d] Map.! b列表是[b,a,c,d],如果a是距离b最近的点,c则是第二个最近的点,d是第三个.
由于它对n * log n每个元素执行排序,因此复杂性如此n^2 * log n.这与对N个点列表进行排序所需时间的基准一致:
points time
200 0m0.086s
400 0m0.389s
600 0m0.980s
800 0m1.838s
1000 0m2.994s
1200 0m4.350s
1400 0m6.477s
1600 0m8.726s
3200 0m39.216s
Run Code Online (Sandbox Code Playgroud)
理论上可以改善多少?有可能把它归结为N * log N?