计算所有对之间的曼哈顿距离

时间:2018-10-20 11:51:08

标签: c++ algorithm sorting optimization time-complexity

我有一个矩阵(例如[ (0,2) , (0,3) , (1,2) , (2,2) ]的某些顶点的(x,y)坐标的列表(在c ++中为矢量)。我想计算列表中每对顶点之间的曼哈顿距离。 目前,我正在使用两个循环:

for(int i=0;i<size-1;i++)
        {
            for(int j=i+1;j<size;j++)
            {
                dist=abs(v[i][0]-v[j][0])+abs(v[i][1]-v[j][1]);
                //Process dist
            }
        } 

此方法的时间复杂度为O(n ^ 2)。有没有更好的方法来做到这一点,并且时间复杂度更低?

1 个答案:

答案 0 :(得分:0)

由于输出大小为\Theta(n^2),每对曼哈顿距离的复杂度都在O(1)中,因此您无法再提高复杂度了。

相关问题