Board logo

标题: [原创代码] [Perl]对多个数组排序 [打印本页]

作者: 523066680    时间: 2017-9-6 11:09     标题: [Perl]对多个数组排序

本帖最后由 523066680 于 2017-9-6 11:12 编辑

抽一些旧练习发出来,消灭Perl区零发帖
  1. use IO::Handle;
  2. STDOUT->autoflush(1);
  3. my @arr = (
  4.         [16,5,3,2 ],
  5.         [16,7,2,2,1 ],
  6.         [16,2,2,2,1 ],
  7.         [16,2,2,2 ],
  8.         [16,5,2,2,1 ],
  9.         [19,3,1,1 ],
  10.         [2,2,2,2,1 ],
  11.         [5,5,3,2,1 ],
  12.     );
  13. my @brr =
  14.     reverse sort
  15.     {
  16.         my $i = 0;
  17.         while ( ($a->[$i] <=> $b->[$i] ) == 0 and $#$a > $i and $#$b > $i )
  18.         {
  19.             $i++;
  20.         }
  21.         
  22.         $a->[$i] <=> $b->[$i]
  23.          ||
  24.         $#$a <=> $#$b;    #如果到了最后能比较的层级仍然相同,则比较元素数量
  25.     }
  26.     @arr;
  27. grep { print join(",", @$_),"\n" } @brr;
复制代码
输出:
  1. 19,3,1,1
  2. 16,7,2,2,1
  3. 16,5,3,2
  4. 16,5,2,2,1
  5. 16,2,2,2,1
  6. 16,2,2,2
  7. 5,5,3,2,1
  8. 2,2,2,2,1
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2