На декартовой плоскости есть случайные точки. Подобно PlottedPointName (a, b, c) с X-координатами (2,4,2) и Y-координатами (6,3,4), и если мы найдем ближайшую точку для поиска NearestPointTo (a, b), которая является NearestPointName (c ), который является ближайшим к точке (a) и NearestPointName (c), который является ближайшим к точке (b).
Я написал код для него с временной сложностью O (n ^ 3). Вычислив расстояние от findNearestPointTo (a, b) до всех остальных точек и найдите минимум.
string[] PlottedPointName={"a","b","c"};
int[] x_cord = {2,4,2};
int[] y_cord = {6,3,4};
int min = 0;
int distance =0;
string[] findNearestPointTo = {"a", "b"};
string[] nearestPoints= new string[findNearestPointTo.length];
for(int i=0;i<findNearestPointTo.length;i++)
{
min=0;
for(int j=0;j<PlottedPointName.lenght;j++)
{
if(findNearestPointTo[i]==points[j])
{
for(int k=0;k<PlottedPointName.length;k++)
{
if(k!=j){
distance = abs(x_cord[i] - x_cord[k]) + abs(y_cord[i] - y_cord[k]);
if(min==0)
{
min=distance;
nearestPoints[i]= PlottedPointName[k];
}
else if(min>0)
{
if(min>distance)
{
min= distance;
nearestPoints[i]= PlottedPointName[k];
}
}
}
}
}
}
}
Есть ли возможность сделать этот код более эффективным с меньшей трудоемкостью.