Как отсортировать точки

185
28 августа 2018, 01:30

Я хочу сделать так, чтобы можно было отсортировать двумерные точки. То есть объекты, у которых есть 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
    }
}
Answer 1

Так и не понял что конкретно вам нужно, но, как вариант, можно сравнить по 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;
}
READ ALSO
c# асинхронное выполнение методов

c# асинхронное выполнение методов

Мне нужно постоянно пинговать около 400 машин и при это м чтобы другой функционал программы работалПишу так :

190
Внутренний EventBus для AspNetCore 2.0

Внутренний EventBus для AspNetCore 2.0

Здравсвуйте, нужно реализовать внутрениий EventBus (не микросервисное взаимодействие на основе например RabbitMq)Все издатели пишут на общую шину...

172
Как сократить долгую проверку на каждую букву C#

Как сократить долгую проверку на каждую букву C#

Нужно сделать проверку что бы введенное слово не содержало английских символов (f,a,g)Но простым, длинным str

168