我寫了一個簡單的排序演算法,想知道它是什么型別? 它只是將初始陣列的元素映射到一個空陣列中,并帶有初始元素的值的索引。
my @arg = (5, 14, 12, 9, 1, 17, 3, 19, 20, 4, 6, 15, 8, 18, 7, 2, 10, 13, 11, 16)。)
my @out;
map { $out[$_] = $_ } @arg;
print join " "/span>, @out;
當然,可以對輸出陣列增加收縮,因為在現實世界中,索引中可能有洞。 另外,這個例子還可以擴展到處理雙數。為此,我建議使用其他資料結構(例如:樹或鏈接串列)
。更新了
。基準:
Rate uniqsort bubble mapping perlsort
uniqsort 82274/s --29% -87% -90%
泡沫 115925/s 41% --81% -86%
mapping 614399/s 647% 430% --25%
perlsort 814352/s 890% 602% 33% --
- &uniqsort - 使用
List::MoreUtils通過uniq sort @arr; - &bubble--基本的bubble排序 。
- &mapping - 這個 。
- &perlsort--使用
sort {$a<=>$b}。@arr
uj5u.com熱心網友回復:
首先,這并不能對數值進行排序,因為它產生了以下的結果:
undef, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20。
注意這個額外的元素。它是pigeonhole sort的一個部分損壞(沒有過濾空元素)、部分專用(不允許重復)的版本。
順便說一下,
@out[@arg] = @arg;
應該比
更快。map { $out[$_] = $_ } @arg;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/311357.html
標籤:
