使用C#对2D点列表进行排序可以通过实现自定义的比较器来实现。以下是一个示例代码:
using System;
using System.Collections.Generic;
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}
public class PointComparer : IComparer<Point>
{
public int Compare(Point p1, Point p2)
{
if (p1.X == p2.X)
{
return p1.Y.CompareTo(p2.Y);
}
else
{
return p1.X.CompareTo(p2.X);
}
}
}
public class Program
{
public static void Main(string[] args)
{
List<Point> points = new List<Point>()
{
new Point { X = 3, Y = 2 },
new Point { X = 1, Y = 4 },
new Point { X = 2, Y = 1 },
new Point { X = 3, Y = 1 },
new Point { X = 2, Y = 2 }
};
points.Sort(new PointComparer());
foreach (var point in points)
{
Console.WriteLine($"X: {point.X}, Y: {point.Y}");
}
}
}
这段代码定义了一个Point
类来表示2D点,然后实现了一个PointComparer
类来实现IComparer<Point>
接口,用于比较两个点的大小。在Main
方法中,创建了一个点列表并使用Sort
方法进行排序,传入自定义的比较器对象。最后,通过遍历排序后的列表,打印出排序结果。
这种方法可以根据点的X坐标进行首次排序,如果X坐标相同,则根据Y坐标进行次要排序。你可以根据实际需求修改比较器的实现来满足不同的排序要求。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云