排名问题

排名问题

请问怎样对数组进行排名?
如:
$list[0][0]="a"
$list[0][1]="30"

$list[1][0]="b"
$list[1][1]="40"

$list[2][0]="c"
$list[2][1]="40"

$list[3][0]="d"
$list[3][1]="0"

$list[4][0]="e"
$list[4][1]="90"
按照第二列数字比较出一个大小排名,结果如下:
$list[0][0]="a"
$list[0][1]="30"
$list[0][2]="3"

$list[1][0]="b"
$list[1][1]="40"
$list[1][2]="2"

$list[2][0]="c"
$list[2][1]="40"
$list[2][2]="2"

$list[3][0]="d"
$list[3][1]="0"
$list[3][2]="4"

$list[4][0]="e"
$list[4][1]="90"
$list[4][2]="1"


萨米意思?

你索引也没写对吧……
改正拉。其实相当于一个分数排名,第一列表示姓名, 第二列表示分数,第三列表示排名


[Copy to clipboard] [ - ]
CODE:
my $i=1;
foreach(sort {$b->[1] <=> $a->[1]} @list){
  $_->[2]= $i++;
}
print Dumper @list;

哦,你同分的是按同名排列,改一下:

[Copy to clipboard] [ - ]
CODE:
my $i=1;my $score=8888;
foreach( sort {$b->[1] <=> $a->[1]} @list){
    $i-- if $_->[1]==$score;
    $_->[2]= $i++;
    $score=$_->[1];
}

恩……用8888,我这个人的确很俗……