怎樣在perl中對陣列排序?

時間 2021-06-23 09:53:02

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 的矩陣,也是 ...