[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创代码] [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
复制代码

返回列表