找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14340|回复: 0

[原创代码] [Perl]对多个数组排序

[复制链接]
发表于 2017-9-6 11:09:07 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:56 , Processed in 0.015625 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表