Sorting 线性矩阵排序

Sorting 线性矩阵排序,sorting,Sorting,我有一个线性向量,其中包含任何给定块的单位坐标。坐标系如下所示。如果我想要从左下角开始到右上角结束的最终列表,那么对列表进行排序的最佳方法是什么?更改数据结构不是一个选项 任何解释都可以;伪代码、伪代码、粗略想法等 您的选择如下 主修专栏 使用字典排序,先按y降序,然后按x递增 排大调 使用字典排序,先按x递增,然后按y递减 为了说明这一点,下面是选项1的C风格示例比较操作 int compare(point a, point b) { if (a.y > b.y)

我有一个线性向量,其中包含任何给定块的单位坐标。坐标系如下所示。如果我想要从左下角开始到右上角结束的最终列表,那么对列表进行排序的最佳方法是什么?更改数据结构不是一个选项

任何解释都可以;伪代码、伪代码、粗略想法等


您的选择如下

  • 主修专栏

    使用字典排序,先按y降序,然后按x递增

  • 排大调

    使用字典排序,先按x递增,然后按y递减

  • 为了说明这一点,下面是选项1的C风格示例比较操作

    int compare(point a, point b)
    {
        if (a.y > b.y)
            return -1;
        else if (a.y < b.y)
            return 1;
        else if (a.x < b.x)
            return -1;
        else if (a.x > b.x)
            return 1;
        else
            return 0;
    }
    
    int比较(点a、点b)
    {
    如果(a.y>b.y)
    返回-1;
    否则如果(a.yb.x)为其他情况
    返回1;
    其他的
    返回0;
    }
    

    它是基于您想要选项1 column major的块上的“#n”标签显示的。

    Perfect,我只做了一个小改动,将返回值-1替换为1,将返回值-1替换为-1,以实现基于列排序的排序。谢谢你的帮助,希尔兹先生!