Я хочу сделать так, чтобы можно было отсортировать двумерные точки. То есть объекты, у которых есть 2 числовых значения. Я хотел бы в будущем отсортировать массив из точек и использовать встроенный бинарный поиск для поиска точки. Как мне определить, меньше или больше ли точка чем та, с которой она сравнивается?
class Point : IComparable
{
public int X { get; set; }
public int Y { get; set; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public int CompareTo(object i)
{
Point obj = i as Point;
if (X == obj.X && Y == obj.Y)
return 0;
// Что дальше? :D
}
}
Так и не понял что конкретно вам нужно, но, как вариант, можно сравнить по X, если равны - сравнить по Y. В таком варианте равными будут только точки с совпадающими координатами. Компарер можно изменить например так:
public int CompareTo(object i)
{
Point obj = i as Point;
if (X == obj.X)
return Y - obj.Y;
else
return X - obj.X;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости