我有一个线性向量,其中包含任何给定块的单位坐标。坐标系如下所示。如果我想要从左下角开始并在右上角结束的最终列表,那么对列表进行排序的最佳方法是什么?不能改变数据结构。
任何解释方法都可以;伪,代码,粗略的想法等。
答案 0 :(得分:1)
您的选择如下。
专栏
按y递减排序,然后按x递增,使用字典排序。
Row major
按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;
}
它基于块上的“#n”标签显示您想要选项1,列major。