arrays - 如何在 perl 中对二维数组进行自定义排序?

标签 arrays perl sorting 2d

我有一个二维数组,我像这样创建:

# i do this in a loop
push @{ $list[$array_index++] }, ($x[0], $x[1], $x[2], $y);

我尝试为该数组编写排序函数,如下所示:

@sorted = sort {$a->[3] > $b->[3]} @list;

但似乎不起作用。

我想要做的是根据每个“行”的“第三列”的值对“行”进行排序。我该怎么做?

最佳答案

您几乎明白了,但您使用了错误的运算符。排序子例程需要返回三个值之一。对于数字比较,您可以使用 spaceship ( <=> ),如果左侧参数小于右侧参数,则返回 -1;如果相等,则返回 0;如果左侧参数大于右侧,则返回 1。

所以:

@sorted = sort {$a->[3] <=> $b->[3]} @list;

(请注意,这实际上是第四列,因为数组是零索引的。我假设这就是您想要的。)

关于arrays - 如何在 perl 中对二维数组进行自定义排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469343/

相关文章:

perl - 如何进行 Perl 机器或平台相关的 TDD?

php - mysql中的多个自动增量

c++ - 使用插入排序 C++

mysql - MySQL 和 DBI 中的 Perl 错误

javascript - 从对象数组中收集键并将其缩减为单个数组并删除重复项

java - 您好,我如何找到数组中的值和位置

arrays - 具有最大范围Excel VBA的列上的序号

perl - 为什么自动增量主键列在sqlite3中不自动增量

c++ - 在排序的静态数组中搜索的最快方法

Java游戏平铺 map 背景问题