1樓:vic yang
二維陣列分級排序(第一列元素優先,第二列其次,以此類推),假設子陣列元素數量不一致
my@arr=(
[16,5
,3,2
],[16,
7,2,
2,1],
[16,2
,2,2
],[16,
5,2,
2,1],
[19,3
,1,1
],[2,
2,2,
2,1],
[5,5
,3,2
,1],);
my@brr
=reverse
sort
$a->[$i
]<=>
$b->[$i
]||$#$a
<=>$#$b
;#如果到了末尾仍然相同,則比較元素數量
}@arr
;grep
@brr;輸出
19,3,1,1
16,7,2,2,1
16,5,3,2
16,5,2,2,1
16,2,2,2
5,5,3,2,1
2,2,2,2,1
這裡面可以把 $a 和 $b 調換就不需要再 reverse假設子陣列元素數量一致,可以用 pack 對陣列打包,把打包後的資料按字串(位元組流?)排序。pack打包是位元組對齊的,不用擔心某個元素位數不同的問題。
useModern::Perl
;STDOUT
->autoflush(1
);my
@arr=(
[16,5
,3,2
],[16,
7,2,
2],[16
,2,2
,2],[
16,5,
2,2],
[19,3
,1,1
],[2,
2,2,
2],[5
,5,3
,2],);
my@temp
=map
@arr
;grep
sort
@temp;輸出
19,3,1,1
16,7,2,2
16,5,3,2
16,5,2,2
16,2,2,2
5,5,3,2
2,2,2,2
2樓:
不知道你想要做什麼樣的排序,Perl中有個施瓦茨變換,在mordern Perl,Perl高階,effective perl中都有介紹。
下面是乙個小哥翻譯的Modern Perl的文章:
第十章超越Perl語法祝好運
3樓:
寫個簡單的程式吧,可以參考下
my @numbers = (14, 3, 12, 2, 23);
my @sorted_numbers = sort @numbers;
say Dumper \@sorted_numbers;
$VAR1 = [
12,14,
2,23,3
在基因測序中為什麼要用到perl?
tmjdone 1.perl很多有軟體和庫,呼叫方便 2.你可以用其他的,python,c 等 3.我在用了python和c 後覺得他們寫多重hash perl,c裡是map 時,perl寫起來比較方便。 Tang Boyun 歷史遺留問題,早期生物界,每建乙個資料庫,就折騰出乙個新格式 格式設計者...
在 LaTeX 中怎麼排序數字?
直接的工具,有 arraysort 巨集包。專門用來對 arrayjobx 風格的陣列排序。例子 documentclass usepackage comparenum begin newarray readarray 排序前 Arr 1 Arr 2 Arr 3 Arr 4 Arr 5 Arr 6 ...
MATLAB中end在高維和低維空陣列中指代不同?
MATLAB 中說維度的時候一般忽略尾部的為 1 的維度 不過一般約定前兩個維度無論為多少都算,ndims 函式返回值最小為 2 如果不忽略其實每個陣列的維度都是 MATLAB 允許的維度最大值那個維度,只不過尾部為 1 的維度的數目不同,所以乙個 2x2 的矩陣其實也是 2x2x1 的矩陣,也是 ...