我在ArrayList中有双打的ArrayLists。所以它就是这样的
ArrayList<ArrayList<Double>> x = new ArrayList<ArrayList<Double>>();
我的x
中有19个ArrayLists。我有一个名为distance(ArrayList x, ArrayList y)
的方法,用于计算ArrayLists x
和y
之间的距离并返回double
。我想计算每个矢量和所有其他矢量之间的距离。
我的方法是做以下
for(int i=0 ; i<(x.size()-1) ; i++)
{
for(int j=(i+1) ; j<x.size() ; j++)
{
System.out.println(distance( x.get(i) , x.get(j) ));
}
}
然而,它看起来效率不高。效率为O(N ^ 2)。 效率对我来说非常重要。我需要帮助来确定执行此操作的 MOST 有效方法是什么。
答案 0 :(得分:-2)
如果性能命中来自distance(x,y)
的算法并且无论如何都无法对其进行优化,为什么不首先尝试缓存给定对(x,y)的距离结果?如果您这样做,请同时考虑distance(x,y) == distance(y,x)
。
此外,预先计算x.size()
并存储它可能会为您节省一些处理。