首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用C#对2D点列表进行排序?

使用C#对2D点列表进行排序可以通过实现自定义的比较器来实现。以下是一个示例代码:

代码语言:csharp
复制
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坐标进行次要排序。你可以根据实际需求修改比较器的实现来满足不同的排序要求。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 路径查找器AI

    问题源于我想建立一个游戏AI,它要能够定义一条从起点到终点的路径,同时避开路上的墙壁障碍物。为此,我写了一个C#库(path.dll),它允许定义一个二维空间(MAXX,MAXY),并为这个空间设立一些矩形的“墙“。在添加完所有的墙后,path类将计算能够绕过墙的AI所有“可见”的AI节点(可见指节点之间没有墙)之间是连接的。这个类实现了一个路径查找算法,使用C#的Delegates(委托)与AI节点实例进行通信。最后,使用这个O_O算法(扩展欧几里得算法)将会得到一个子类,它是所节点的下一个目的AI节点的集合。在示例图中,可以看到墙(橙色),AI NODES(红色),起点(蓝色)和终点(蓝色)。

    07
    领券