【问题标题】:How do I custom sort a 2D array in perl?如何在 perl 中自定义对二维数组进行排序?
【发布时间】:2013-05-04 09:00:57
【问题描述】:

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

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

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

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

但它似乎不起作用。

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

【问题讨论】:

    标签: arrays perl sorting 2d


    【解决方案1】:

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

    所以:

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 2013-09-13
      • 2015-07-30
      • 1970-01-01
      • 2013-08-17
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多