免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3213 | 回复: 11
打印 上一主题 下一主题

数组排序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-16 16:06 |只看该作者 |倒序浏览
bk      14
bk   9
bk    12
bk   7
bq    9
bk    14
du   7
du    7
dt    10
du   14
bk   10
bq   8
bk    9
bq    11
cn   7
bq    9对这样的数据按数字进行排序怎么排啊

论坛徽章:
0
2 [报告]
发表于 2012-07-16 16:29 |只看该作者
轻易南村 发表于 2012-07-16 16:06
bk      14
bk   9
bk    12
  1. my ( @head, @end );
  2. while ( <DATA> ) {
  3.     my ( $a, $b ) = split /\s+/;
  4.     push @head, $a;
  5.     push @end, $b;
  6. }
  7. my @idx = sort { $end[$a]<=>$end[$b] } 0..$#end;
  8. print "@head[@idx]\n";
  9. print "@end[@idx]\n";
  10. __DATA__
  11. bk  14
  12. bk  9
  13. bk  12
  14. bk  7
  15. bq  9
  16. bk  14
  17. du  7
  18. du  7
  19. dt  10
  20. du  14
  21. bk  10
  22. bq  8
  23. bk  9
  24. bq  11
  25. cn  7
  26. bq  9
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-07-16 16:29 |只看该作者
  1. print "$_\n" for map { $_->[0]               }
  2.                 sort { $a->[1] <=> $b->[1]   }
  3.                  map { chomp;[$_,(split)[1]] } <DATA>;
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-07-16 17:25 |只看该作者
thanks 回复 2# 午夜凋零


   

论坛徽章:
0
5 [报告]
发表于 2012-07-16 17:26 |只看该作者
thank you回复 3# kk861123


   

论坛徽章:
0
6 [报告]
发表于 2012-07-16 18:05 |只看该作者
请问一下 如果将排完序的数据在赋值给一个数组怎么做啊回复 3# kk861123


   

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
7 [报告]
发表于 2012-07-16 18:27 |只看该作者
本帖最后由 cdtits 于 2012-07-16 18:28 编辑

回复 6# 轻易南村
  1. @data = sort { $a->[1] <=> $b->[1] or $a->[0] cmp $b->[0] }
  2.         map  { @tmp = split; [@tmp]; } <DATA>;
  3. print join("\t", @{$_}), "\n" for (@data);
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-07-16 19:11 |只看该作者
回复 6# 轻易南村
  1. @data = map { $_->[0]               }
  2.        sort { $a->[1] <=> $b->[1]   }
  3.         map { chomp;[$_,(split)[1]] } <DATA>;
复制代码
不清楚你到底要数据后想如何处理,但是我猜楼上的代码应该能更好的满足你的要求
   

论坛徽章:
0
9 [报告]
发表于 2012-07-17 16:10 |只看该作者
谢谢你回复 7# cdtits


   

论坛徽章:
0
10 [报告]
发表于 2012-07-17 16:11 |只看该作者
谢谢你回复 8# kk861123


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP